Styling bonanza

This commit is contained in:
nikolark committed 2013-03-30 21:47:09 +01:00
1 parent 07441472b3
commit 1ddb7abcb6
38 files changed
+22442

No files matched your search

+1
View File
@@ -1,3 +1,4 @@
*.swp
*.swo
wp-config.php
.sass-cache
+4
View File
@@ -0,0 +1,4 @@
# www.robotstxt.org/
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449
User-agent: *
+20
View File
@@ -0,0 +1,20 @@
Copyright (c) 2011 ZURB, http://www.zurb.com/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+16
View File
@@ -0,0 +1,16 @@
require 'zurb-foundation'
# Require any additional compass plugins here.
# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "stylesheets"
sass_dir = "sass"
images_dir = "images"
javascripts_dir = "javascripts"
# output_style = :expanded or :nested or :compact or :compressed
# relative_assets = true
line_comments = false
+60
View File
@@ -0,0 +1,60 @@
<?php
/**
* The default template for displaying content. Used for both single and index/archive/search.
*
*/
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if ( is_sticky() && is_home() && ! is_paged() ) : ?>
<div class="featured-post">
<?php _e( 'Featured post', 'gf2013' ); ?>
</div>
<?php endif; ?>
<header class="entry-header">
<?php the_post_thumbnail(); ?>
<?php if ( is_single() ) : ?>
<h1 class="entry-title"><?php the_title(); ?></h1>
<?php else : ?>
<h1 class="entry-title">
<a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
</h1>
<?php endif; // is_single() ?>
</header><!-- .entry-header -->
<?php if ( is_search() ) : // Only display Excerpts for Search ?>
<div class="entry-summary">
<?php the_excerpt(); ?>
</div><!-- .entry-summary -->
<?php else : ?>
<ul class="entry-content large-block-grid-2">
<li>
<?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'gf2013' ) ); ?>
<?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'gf2013' ), 'after' => '</div>' ) ); ?>
</li>
<li>
bu
</li>
</ul><!-- .entry-content -->
<?php endif; ?>
<footer class="entry-meta">
<?php edit_post_link( __( 'Edit', 'gf2013' ), '<span class="edit-link">', '</span>' ); ?>
<?php if ( is_singular() && get_the_author_meta( 'description' ) && is_multi_author() ) : // If a user has filled out their description and this is a multi-author blog, show a bio on their entries. ?>
<div class="author-info">
<div class="author-avatar">
<?php echo get_avatar( get_the_author_meta( 'user_email' ), apply_filters( 'gf2013_author_bio_avatar_size', 68 ) ); ?>
</div><!-- .author-avatar -->
<div class="author-description">
<h2><?php printf( __( 'About %s', 'gf2013' ), get_the_author() ); ?></h2>
<p><?php the_author_meta( 'description' ); ?></p>
<div class="author-link">
<a href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>" rel="author">
<?php printf( __( 'View all posts by %s <span class="meta-nav">&rarr;</span>', 'gf2013' ), get_the_author() ); ?>
</a>
</div><!-- .author-link -->
</div><!-- .author-description -->
</div><!-- .author-info -->
<?php endif; ?>
</footer><!-- .entry-meta -->
</article><!-- #post -->
+38
View File
@@ -0,0 +1,38 @@
<?php
/**
* The template for displaying the footer.
*
*/
?>
</div><!-- #main .wrapper -->
</div><!-- #page -->
<div class="nav-wrapper small-3 large-3 columns">
<div class="date-mark">
<img src="<?php echo get_template_directory_uri(); ?>/images/leaf_left.png" />
<div class="date">
<h3>5.10.2013</h3>
</div>
<div class="name">
<h3>Gamle Logen</h3>
</div>
<div class="time">
<h2>16.00</h2>
</div>
<img src="<?php echo get_template_directory_uri(); ?>/images/leaf_right.png" />
</div>
<nav id="site-navigation" class="main-navigation" role="navigation">
<?php wp_nav_menu( array( 'theme_location' => 'primary-menu', 'menu_class' => 'nav-menu' ) ); ?>
</nav><!-- #site-navigation -->
</div>
</div>
<!--<footer id="colophon" role="contentinfo" class="row">
<div class="site-info small-8 columns">
Webdesign: <a href="http://kak.studentersamfundet.no">KAK</a>
</div>
</footer>-->
<script src="<?php echo get_template_directory_uri(); ?>/javascripts/foundation/foundation.js"></script>
<?php wp_footer(); ?>
</body>
</html>
+22
View File
@@ -0,0 +1,22 @@
<?php
get_header();
?>
<div id="primary" class="site-content">
<div id="content" role="main">
<?php if ( have_posts() ) : ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<div class="front-page-caption">
<?php the_content(); ?>
</div>
<?php endwhile; ?>
<?php endif; // end have_posts() check ?>
</div><!-- #content -->
</div><!-- #primary -->
<?
get_footer();
?>
+6
View File
@@ -0,0 +1,6 @@
<?php
function register_my_menu() {
register_nav_menu('primary-menu', __( 'Menu' ));
}
add_action( 'init', 'register_my_menu' );
?>
+39
View File
@@ -0,0 +1,39 @@
<?php
/**
* The Header for our theme.
*
* Displays all of the <head> section and everything up till <div id="main">
*
*/
?><!DOCTYPE html>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<link href="<?php echo get_template_directory_uri(); ?>/stylesheets/normalize.css" media="screen, projector, print" rel="stylesheet" type="text/css" />
<link href="<?php echo get_template_directory_uri(); ?>/stylesheets/app.css" media="screen, projector, print" rel="stylesheet" type="text/css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="<?php echo get_template_directory_uri(); ?>/assets/js/vendor/jquery-1.9.0.min.js"><\/script>')</script>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<div class="page-wrapper row">
<div id="page" class="hfeed site small-6 large-9 columns">
<header id="masthead" class="site-header" role="banner">
<hgroup>
<h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
</hgroup>
</header><!-- #masthead -->
<div id="main" class="wrapper">
Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

+140
View File
@@ -0,0 +1,140 @@
<!DOCTYPE html>
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Foundation 4</title>
<link rel="stylesheet" href="stylesheets/normalize.css" />
<link rel="stylesheet" href="stylesheets/app.css" />
<script src="javascripts/vendor/custom.modernizr.js"></script>
</head>
<body>
<div class="row">
<div class="large-12 columns">
<h2>Welcome to Foundation</h2>
<p>This is version 4.0.9.</p>
<hr />
</div>
</div>
<div class="row">
<div class="large-8 columns">
<h3>The Grid</h3>
<!-- Grid Example -->
<div class="row">
<div class="large-12 columns">
<div class="panel">
<p>This is a twelve column section in a row. Each of these includes a div.panel element so you can see where the columns are - it's not required at all for the grid.</p>
</div>
</div>
</div>
<div class="row">
<div class="large-6 columns">
<div class="panel">
<p>Six columns</p>
</div>
</div>
<div class="large-6 columns">
<div class="panel">
<p>Six columns</p>
</div>
</div>
</div>
<div class="row">
<div class="large-4 columns">
<div class="panel">
<p>Four columns</p>
</div>
</div>
<div class="large-4 columns">
<div class="panel">
<p>Four columns</p>
</div>
</div>
<div class="large-4 columns">
<div class="panel">
<p>Four columns</p>
</div>
</div>
</div>
<h3>Buttons</h3>
<div class="row">
<div class="large-6 columns">
<p><a href="#" class="small button">Small Button</a></p>
<p><a href="#" class="button">Medium Button</a></p>
<p><a href="#" class="large button">Large Button</a></p>
</div>
<div class="large-6 columns">
<p><a href="#" class="small alert button">Small Alert Button</a></p>
<p><a href="#" class="success button">Medium Success Button</a></p>
<p><a href="#" class="large secondary button">Large Secondary Button</a></p>
</div>
</div>
</div>
<div class="large-4 columns">
<h4>Getting Started</h4>
<p>We're stoked you want to try Foundation! To get going, this file (index.html) includes some basic styles you can modify, play around with, or totally destroy to get going.</p>
<h4>Other Resources</h4>
<p>Once you've exhausted the fun in this document, you should check out:</p>
<ul class="disc">
<li><a href="http://foundation.zurb.com/docs">Foundation Documentation</a><br />Everything you need to know about using the framework.</li>
<li><a href="http://github.com/zurb/foundation">Foundation on Github</a><br />Latest code, issue reports, feature requests and more.</li>
<li><a href="http://twitter.com/foundationzurb">@foundationzurb</a><br />Ping us on Twitter if you have questions. If you build something with this we'd love to see it (and send you a totally boss sticker).</li>
</ul>
</div>
</div>
<script>
document.write('<script src=' +
('__proto__' in {} ? 'javascripts/vendor/zepto' : 'javascripts/vendor/jquery') +
'.js><\/script>')
</script>
<script src="javascripts/foundation/foundation.js"></script>
<script src="javascripts/foundation/foundation.magellan.js"></script>
<script src="javascripts/foundation/foundation.dropdown.js"></script>
<script src="javascripts/foundation/foundation.cookie.js"></script>
<script src="javascripts/foundation/foundation.section.js"></script>
<script src="javascripts/foundation/foundation.joyride.js"></script>
<script src="javascripts/foundation/foundation.forms.js"></script>
<script src="javascripts/foundation/foundation.placeholder.js"></script>
<script src="javascripts/foundation/foundation.reveal.js"></script>
<script src="javascripts/foundation/foundation.clearing.js"></script>
<script src="javascripts/foundation/foundation.alerts.js"></script>
<script src="javascripts/foundation/foundation.topbar.js"></script>
<script src="javascripts/foundation/foundation.orbit.js"></script>
<script src="javascripts/foundation/foundation.tooltips.js"></script>
<script>
$(document).foundation();
</script>
</body>
</html>
+53
View File
@@ -0,0 +1,53 @@
<?php
/**
* The main template file.
*/
get_header(); ?>
<div id="primary" class="site-content">
<div id="content" role="main">
<?php if ( have_posts() ) : ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
<?php else : ?>
<article id="post-0" class="post no-results not-found">
<?php if ( current_user_can( 'edit_posts' ) ) :
// Show a different message to a logged-in user who can add posts.
?>
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'No posts to display', 'twentytwelve' ); ?></h1>
</header>
<div class="entry-content">
<p><?php printf( __( 'Ready to publish your first post? <a href="%s">Get started here</a>.', 'gf2013' ), admin_url( 'post-new.php' ) ); ?></p>
</div><!-- .entry-content -->
<?php else :
// Show the default message to everyone else.
?>
<header class="entry-header">
<h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
</header>
<div class="entry-content">
<p><?php _e( 'Apologies, but no results were found. Perhaps searching will help find a related post.', 'gf2013' ); ?></p>
<?php get_search_form(); ?>
</div><!-- .entry-content -->
<?php endif; // end current_user_can() check ?>
</article><!-- #post-0 -->
<?php endif; // end have_posts() check ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
@@ -0,0 +1,50 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.alerts = {
name : 'alerts',
version : '4.0.0',
settings : {
speed: 300, // fade out speed
callback: function (){}
},
init : function (scope, method, options) {
this.scope = scope || this.scope;
if (typeof method === 'object') {
$.extend(true, this.settings, method);
}
if (typeof method != 'string') {
if (!this.settings.init) this.events();
return this.settings.init;
} else {
return this[method].call(this, options);
}
},
events : function () {
var self = this;
$(this.scope).on('click.fndtn.alerts', '[data-alert] a.close', function (e) {
e.preventDefault();
$(this).closest("[data-alert]").fadeOut(self.speed, function () {
$(this).remove();
self.settings.callback();
});
});
this.settings.init = true;
},
off : function () {
$(this.scope).off('.fndtn.alerts');
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,480 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.clearing = {
name : 'clearing',
version : '4.0.0',
settings : {
templates : {
viewing : '<a href="#" class="clearing-close">&times;</a>' +
'<div class="visible-img" style="display: none"><img src="//:0">' +
'<p class="clearing-caption"></p><a href="#" class="clearing-main-left"><span></span></a>' +
'<a href="#" class="clearing-main-right"><span></span></a></div>'
},
// comma delimited list of selectors that, on click, will close clearing,
// add 'div.clearing-blackout, div.visible-img' to close on background click
close_selectors : '.clearing-close',
// event initializers and locks
init : false,
locked : false
},
init : function (scope, method, options) {
this.scope = this.scope || scope;
Foundation.inherit(this, 'set_data get_data remove_data throttle');
if (typeof method === 'object') {
options = $.extend(true, this.settings, method);
}
if (typeof method != 'string') {
$(this.scope).find('ul[data-clearing]').each(function () {
var self = Foundation.libs.clearing,
$el = $(this),
options = options || {},
settings = self.get_data($el);
if (!settings) {
options.$parent = $el.parent();
self.set_data($el, $.extend(true, self.settings, options));
self.assemble($el.find('li'));
if (!self.settings.init) {
self.events().swipe_events();
}
}
});
return this.settings.init;
} else {
// fire method
return this[method].call(this, options);
}
},
// event binding and initial setup
events : function () {
var self = this;
$(this.scope)
.on('click.fndtn.clearing', 'ul[data-clearing] li',
function (e, current, target) {
var current = current || $(this),
target = target || current,
settings = self.get_data(current.parent());
e.preventDefault();
if (!settings) self.init();
// set current and target to the clicked li if not otherwise defined.
self.open($(e.target), current, target);
self.update_paddles(target);
})
.on('click.fndtn.clearing', '.clearing-main-right',
function (e) { this.nav(e, 'next') }.bind(this))
.on('click.fndtn.clearing', '.clearing-main-left',
function (e) { this.nav(e, 'prev') }.bind(this))
.on('click.fndtn.clearing', this.settings.close_selectors,
function (e) { Foundation.libs.clearing.close(e, this) })
.on('keydown.fndtn.clearing',
function (e) { this.keydown(e) }.bind(this));
$(window).on('resize.fndtn.clearing',
function (e) { this.resize() }.bind(this));
this.settings.init = true;
return this;
},
swipe_events : function () {
var self = this;
$(this.scope)
.on('touchstart.fndtn.clearing', '.visible-img', function(e) {
if (!e.touches) { e = e.originalEvent; }
var data = {
start_page_x: e.touches[0].pageX,
start_page_y: e.touches[0].pageY,
start_time: (new Date()).getTime(),
delta_x: 0,
is_scrolling: undefined
};
$(this).data('swipe-transition', data);
e.stopPropagation();
})
.on('touchmove.fndtn.clearing', '.visible-img', function(e) {
if (!e.touches) { e = e.originalEvent; }
// Ignore pinch/zoom events
if(e.touches.length > 1 || e.scale && e.scale !== 1) return;
var data = $(this).data('swipe-transition');
if (typeof data === 'undefined') {
data = {};
}
data.delta_x = e.touches[0].pageX - data.start_page_x;
if ( typeof data.is_scrolling === 'undefined') {
data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
}
if (!data.is_scrolling && !data.active) {
e.preventDefault();
var direction = (data.delta_x < 0) ? 'next' : 'prev';
data.active = true;
self.nav(e, direction);
}
})
.on('touchend.fndtn.clearing', '.visible-img', function(e) {
$(this).data('swipe-transition', {});
e.stopPropagation();
});
},
assemble : function ($li) {
var $el = $li.parent(),
settings = this.get_data($el),
grid = $el.detach(),
data = {
grid: '<div class="carousel">' + this.outerHTML(grid[0]) + '</div>',
viewing: settings.templates.viewing
},
wrapper = '<div class="clearing-assembled"><div>' + data.viewing +
data.grid + '</div></div>';
return settings.$parent.append(wrapper);
},
// event callbacks
open : function ($image, current, target) {
var root = target.closest('.clearing-assembled'),
container = root.find('div').first(),
visible_image = container.find('.visible-img'),
image = visible_image.find('img').not($image);
if (!this.locked()) {
// set the image to the selected thumbnail
image.attr('src', this.load($image));
this.loaded(image, function () {
// toggle the gallery
root.addClass('clearing-blackout');
container.addClass('clearing-container');
visible_image.show();
this.fix_height(target)
.caption(visible_image.find('.clearing-caption'), $image)
.center(image)
.shift(current, target, function () {
target.siblings().removeClass('visible');
target.addClass('visible');
});
}.bind(this));
}
},
close : function (e, el) {
e.preventDefault();
var root = (function (target) {
if (/blackout/.test(target.selector)) {
return target;
} else {
return target.closest('.clearing-blackout');
}
}($(el))), container, visible_image;
if (el === e.target && root) {
container = root.find('div').first(),
visible_image = container.find('.visible-img');
this.settings.prev_index = 0;
root.find('ul[data-clearing]')
.attr('style', '').closest('.clearing-blackout')
.removeClass('clearing-blackout');
container.removeClass('clearing-container');
visible_image.hide();
}
return false;
},
keydown : function (e) {
var clearing = $('.clearing-blackout').find('ul[data-clearing]');
if (e.which === 39) this.go(clearing, 'next');
if (e.which === 37) this.go(clearing, 'prev');
if (e.which === 27) $('a.clearing-close').trigger('click');
},
nav : function (e, direction) {
var clearing = $('.clearing-blackout').find('ul[data-clearing]');
e.preventDefault();
this.go(clearing, direction);
},
resize : function () {
var image = $('.clearing-blackout .visible-img').find('img');
if (image.length) {
this.center(image);
}
},
// visual adjustments
fix_height : function (target) {
var lis = target.parent().children(),
self = this;
lis.each(function () {
var li = $(this),
image = li.find('img');
if (li.height() > self.outerHeight(image)) {
li.addClass('fix-height');
}
})
.closest('ul')
.width(lis.length * 100 + '%');
return this;
},
update_paddles : function (target) {
var visible_image = target
.closest('.carousel')
.siblings('.visible-img');
if (target.next().length) {
visible_image
.find('.clearing-main-right')
.removeClass('disabled');
} else {
visible_image
.find('.clearing-main-right')
.addClass('disabled');
}
if (target.prev().length) {
visible_image
.find('.clearing-main-left')
.removeClass('disabled');
} else {
visible_image
.find('.clearing-main-left')
.addClass('disabled');
}
},
center : function (target) {
target.css({
marginLeft : -(this.outerWidth(target) / 2),
marginTop : -(this.outerHeight(target) / 2)
});
return this;
},
// image loading and preloading
load : function ($image) {
var href = $image.parent().attr('href');
this.preload($image);
if (href) return href;
return $image.attr('src');
},
preload : function ($image) {
this
.img($image.closest('li').next())
.img($image.closest('li').prev());
},
loaded : function (image, callback) {
// based on jquery.imageready.js
// @weblinc, @jsantell, (c) 2012
function loaded () {
callback();
}
function bindLoad () {
this.one('load', loaded);
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
var src = this.attr( 'src' ),
param = src.match( /\?/ ) ? '&' : '?';
param += 'random=' + (new Date()).getTime();
this.attr('src', src + param);
}
}
if (!image.attr('src')) {
loaded();
return;
}
if (this.complete || this.readyState === 4) {
loaded();
} else {
bindLoad.call(image);
}
},
img : function (img) {
if (img.length) {
var new_img = new Image(),
new_a = img.find('a');
if (new_a.length) {
new_img.src = new_a.attr('href');
} else {
new_img.src = img.find('img').attr('src');
}
}
return this;
},
// image caption
caption : function (container, $image) {
var caption = $image.data('caption');
if (caption) {
container
.text(caption)
.show();
} else {
container
.text('')
.hide();
}
return this;
},
// directional methods
go : function ($ul, direction) {
var current = $ul.find('.visible'),
target = current[direction]();
if (target.length) {
target
.find('img')
.trigger('click', [current, target]);
}
},
shift : function (current, target, callback) {
var clearing = target.parent(),
old_index = this.settings.prev_index || target.index(),
direction = this.direction(clearing, current, target),
left = parseInt(clearing.css('left'), 10),
width = this.outerWidth(target),
skip_shift;
// we use jQuery animate instead of CSS transitions because we
// need a callback to unlock the next animation
if (target.index() !== old_index && !/skip/.test(direction)){
if (/left/.test(direction)) {
this.lock();
clearing.animate({left : left + width}, 300, this.unlock());
} else if (/right/.test(direction)) {
this.lock();
clearing.animate({left : left - width}, 300, this.unlock());
}
} else if (/skip/.test(direction)) {
// the target image is not adjacent to the current image, so
// do we scroll right or not
skip_shift = target.index() - this.settings.up_count;
this.lock();
if (skip_shift > 0) {
clearing.animate({left : -(skip_shift * width)}, 300, this.unlock());
} else {
clearing.animate({left : 0}, 300, this.unlock());
}
}
callback();
},
direction : function ($el, current, target) {
var lis = $el.find('li'),
li_width = this.outerWidth(lis) + (this.outerWidth(lis) / 4),
up_count = Math.floor(this.outerWidth($('.clearing-container')) / li_width) - 1,
target_index = lis.index(target),
response;
this.settings.up_count = up_count;
if (this.adjacent(this.settings.prev_index, target_index)) {
if ((target_index > up_count)
&& target_index > this.settings.prev_index) {
response = 'right';
} else if ((target_index > up_count - 1)
&& target_index <= this.settings.prev_index) {
response = 'left';
} else {
response = false;
}
} else {
response = 'skip';
}
this.settings.prev_index = target_index;
return response;
},
adjacent : function (current_index, target_index) {
for (var i = target_index + 1; i >= target_index - 1; i--) {
if (i === current_index) return true;
}
return false;
},
// lock management
lock : function () {
this.settings.locked = true;
},
unlock : function () {
this.settings.locked = false;
},
locked : function () {
return this.settings.locked;
},
// plugin management/browser quirks
outerHTML : function (el) {
// support FireFox < 11
return el.outerHTML || new XMLSerializer().serializeToString(el);
},
off : function () {
$(this.scope).off('.fndtn.clearing');
$(window).off('.fndtn.clearing');
this.remove_data(); // empty settings cache
this.settings.init = false;
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,74 @@
/*!
* jQuery Cookie Plugin v1.3
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2011, Klaus Hartl
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://www.opensource.org/licenses/mit-license.php
* http://www.opensource.org/licenses/GPL-2.0
*
* Modified to work with Zepto.js by ZURB
*/
(function ($, document, undefined) {
var pluses = /\+/g;
function raw(s) {
return s;
}
function decoded(s) {
return decodeURIComponent(s.replace(pluses, ' '));
}
var config = $.cookie = function (key, value, options) {
// write
if (value !== undefined) {
options = $.extend({}, config.defaults, options);
if (value === null) {
options.expires = -1;
}
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setDate(t.getDate() + days);
}
value = config.json ? JSON.stringify(value) : String(value);
return (document.cookie = [
encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// read
var decode = config.raw ? raw : decoded;
var cookies = document.cookie.split('; ');
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split('=');
if (decode(parts.shift()) === key) {
var cookie = decode(parts.join('='));
return config.json ? JSON.parse(cookie) : cookie;
}
}
return null;
};
config.defaults = {};
$.removeCookie = function (key, options) {
if ($.cookie(key) !== null) {
$.cookie(key, null, options);
return true;
}
return false;
};
})(Foundation.zj, document);
@@ -0,0 +1,130 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.dropdown = {
name : 'dropdown',
version : '4.0.9',
settings : {
activeClass: 'open'
},
init : function (scope, method, options) {
this.scope = scope || this.scope;
Foundation.inherit(this, 'throttle');
if (typeof method === 'object') {
$.extend(true, this.settings, method);
}
if (typeof method != 'string') {
if (!this.settings.init) {
this.events();
}
return this.settings.init;
} else {
return this[method].call(this, options);
}
},
events : function () {
var self = this;
$(this.scope).on('click.fndtn.dropdown', '[data-dropdown]', function (e) {
e.preventDefault();
e.stopPropagation();
self.toggle($(this));
});
$('*, html, body').on('click.fndtn.dropdown', function (e) {
if (!$(e.target).data('dropdown')) {
$('[data-dropdown-content]')
.css('left', '-99999px')
.removeClass(self.settings.activeClass);
}
});
$(window).on('resize.fndtn.dropdown', self.throttle(function () {
self.resize.call(self);
}, 50)).trigger('resize');
this.settings.init = true;
},
toggle : function (target, resize) {
var dropdown = $('#' + target.data('dropdown'));
$('[data-dropdown-content]').not(dropdown).css('left', '-99999px').removeClass(this.settings.activeClass);
if (dropdown.hasClass(this.settings.activeClass)) {
dropdown
.css('left', '-99999px')
.removeClass(this.settings.activeClass);
} else {
this
.css(dropdown
.addClass(this.settings.activeClass), target);
}
},
resize : function () {
var dropdown = $('[data-dropdown-content].open'),
target = $("[data-dropdown='" + dropdown.attr('id') + "']");
if (dropdown.length && target.length) {
this.css(dropdown, target);
}
},
css : function (dropdown, target) {
if (dropdown.parent()[0] === $('body')[0]) {
var position = target.offset();
} else {
var position = target.position();
}
if (this.small()) {
dropdown.css({
position : 'absolute',
width: '95%',
left: '2.5%',
'max-width': 'none',
top: position.top + this.outerHeight(target)
});
} else {
if ($(window).width() > this.outerWidth(dropdown) + target.offset().left) {
var left = position.left;
} else {
if (!dropdown.hasClass('right')) {
dropdown.addClass('right');
}
var left = position.left - (this.outerWidth(dropdown) - this.outerWidth(target));
}
dropdown.attr('style', '').css({
position : 'absolute',
top: position.top + this.outerHeight(target),
left: left
});
}
return dropdown;
},
small : function () {
return $(window).width() < 768 || $('html').hasClass('lt-ie9');
},
off: function () {
$(this.scope).off('.fndtn.dropdown');
$('html, body').off('.fndtn.dropdown');
$(window).off('.fndtn.dropdown');
$('[data-dropdown-content]').off('.fndtn.dropdown');
this.settings.init = false;
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,395 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.forms = {
name : 'forms',
version : '4.0.4',
settings : {
disable_class: 'no-custom'
},
init : function (scope, method, options) {
this.scope = scope || this.scope;
if (typeof method === 'object') {
$.extend(true, this.settings, method);
}
if (typeof method != 'string') {
if (!this.settings.init) {
this.events();
}
this.assemble();
return this.settings.init;
} else {
return this[method].call(this, options);
}
},
assemble : function () {
$('form.custom input[type="radio"]', $(this.scope)).not('[data-customforms="disabled"]')
.each(this.append_custom_markup);
$('form.custom input[type="checkbox"]', $(this.scope)).not('[data-customforms="disabled"]')
.each(this.append_custom_markup);
$('form.custom select', $(this.scope)).not('[data-customforms="disabled"]')
.each(this.append_custom_select);
},
events : function () {
var self = this;
$(this.scope)
.on('change.fndtn.forms', 'form.custom select:not([data-customforms="disabled"])', function (e) {
self.refresh_custom_select($(this));
})
.on('click.fndtn.forms', 'form.custom label', function (e) {
var $associatedElement = $('#' + self.escape($(this).attr('for')) + ':not([data-customforms="disabled"])'),
$customCheckbox,
$customRadio;
if ($associatedElement.length !== 0) {
if ($associatedElement.attr('type') === 'checkbox') {
e.preventDefault();
$customCheckbox = $(this).find('span.custom.checkbox');
//the checkbox might be outside after the label
if ($customCheckbox.length == 0) {
$customCheckbox = $(this).next('span.custom.checkbox');
}
//the checkbox might be outside before the label
if ($customCheckbox.length == 0) {
$customCheckbox = $(this).prev('span.custom.checkbox');
}
self.toggle_checkbox($customCheckbox);
} else if ($associatedElement.attr('type') === 'radio') {
e.preventDefault();
$customRadio = $(this).find('span.custom.radio');
//the radio might be outside after the label
if ($customRadio.length == 0) {
$customRadio = $(this).next('span.custom.radio');
}
//the radio might be outside before the label
if ($customRadio.length == 0) {
$customRadio = $(this).prev('span.custom.radio');
}
self.toggle_radio($customRadio);
}
}
})
.on('click.fndtn.forms', 'form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector', function (e) {
var $this = $(this),
$dropdown = $this.closest('div.custom.dropdown'),
$select = $dropdown.prev();
// make sure other dropdowns close
if(!$dropdown.hasClass('open'))
$(self.scope).trigger('click');
e.preventDefault();
if (false === $select.is(':disabled')) {
$dropdown.toggleClass('open');
if ($dropdown.hasClass('open')) {
$(self.scope).on('click.fndtn.forms.customdropdown', function () {
$dropdown.removeClass('open');
$(self.scope).off('.fndtn.forms.customdropdown');
});
} else {
$(self.scope).on('.fndtn.forms.customdropdown');
}
return false;
}
})
.on('click.fndtn.forms touchend.fndtn.forms', 'form.custom div.custom.dropdown li', function (e) {
var $this = $(this),
$customDropdown = $this.closest('div.custom.dropdown'),
$select = $customDropdown.prev(),
selectedIndex = 0;
e.preventDefault();
e.stopPropagation();
if ( ! $(this).hasClass('disabled')) {
$('div.dropdown').not($customDropdown).removeClass('open');
var $oldThis= $this
.closest('ul')
.find('li.selected');
$oldThis.removeClass('selected');
$this.addClass('selected');
$customDropdown
.removeClass('open')
.find('a.current')
.html($this.html());
$this.closest('ul').find('li').each(function (index) {
if ($this[0] == this) {
selectedIndex = index;
}
});
$select[0].selectedIndex = selectedIndex;
//store the old value in data
$select.data('prevalue', $oldThis.html());
$select.trigger('change');
}
});
this.settings.init = true;
},
append_custom_markup : function (idx, sel) {
var $this = $(sel).hide(),
type = $this.attr('type'),
$span = $this.next('span.custom.' + type);
if ($span.length === 0) {
$span = $('<span class="custom ' + type + '"></span>').insertAfter($this);
}
$span.toggleClass('checked', $this.is(':checked'));
$span.toggleClass('disabled', $this.is(':disabled'));
},
append_custom_select : function (idx, sel) {
var self = Foundation.libs.forms,
$this = $( sel ),
$customSelect = $this.next( 'div.custom.dropdown' ),
$customList = $customSelect.find( 'ul' ),
$selectCurrent = $customSelect.find( ".current" ),
$selector = $customSelect.find( ".selector" ),
$options = $this.find( 'option' ),
$selectedOption = $options.filter( ':selected' ),
copyClasses = $this.attr('class') ? $this.attr('class').split(' ') : [],
maxWidth = 0,
liHtml = '',
$listItems,
$currentSelect = false;
if ($this.hasClass(self.settings.disable_class)) return;
if ($customSelect.length === 0) {
var customSelectSize = $this.hasClass( 'small' ) ? 'small' :
$this.hasClass( 'medium' ) ? 'medium' :
$this.hasClass( 'large' ) ? 'large' :
$this.hasClass( 'expand' ) ? 'expand' : '';
$customSelect = $('<div class="' + ['custom', 'dropdown', customSelectSize ].concat(copyClasses).filter(function(item, idx,arr){ if(item == '') return false; return arr.indexOf(item) == idx; }).join( ' ' ) + '"><a href="#" class="selector"></a><ul /></div>');
$selector = $customSelect.find(".selector");
$customList = $customSelect.find("ul");
liHtml = $options.map(function() { return "<li>" + $( this ).html() + "</li>"; } ).get().join( '' );
$customList.append(liHtml);
$currentSelect = $customSelect.prepend('<a href="#" class="current">' + $selectedOption.html() + '</a>' ).find( ".current" );
$this
.after( $customSelect )
.hide();
} else {
liHtml = $options.map(function() {
return "<li>" + $( this ).html() + "</li>";
})
.get().join('');
$customList
.html('')
.append(liHtml);
} // endif $customSelect.length === 0
$customSelect.toggleClass('disabled', $this.is( ':disabled' ) );
$listItems = $customList.find( 'li' );
$options.each( function ( index ) {
if ( this.selected ) {
$listItems.eq( index ).addClass( 'selected' );
if ($currentSelect) {
$currentSelect.html( $( this ).html() );
}
}
if ($(this).is(':disabled')) {
$listItems.eq( index ).addClass( 'disabled' );
}
});
//
// If we're not specifying a predetermined form size.
//
if (!$customSelect.is('.small, .medium, .large, .expand')) {
// ------------------------------------------------------------------------------------
// This is a work-around for when elements are contained within hidden parents.
// For example, when custom-form elements are inside of a hidden reveal modal.
//
// We need to display the current custom list element as well as hidden parent elements
// in order to properly calculate the list item element's width property.
// -------------------------------------------------------------------------------------
$customSelect.addClass( 'open' );
//
// Quickly, display all parent elements.
// This should help us calcualate the width of the list item's within the drop down.
//
var self = Foundation.libs.forms;
self.hidden_fix.adjust( $customList );
maxWidth = ( self.outerWidth($listItems) > maxWidth ) ? self.outerWidth($listItems) : maxWidth;
Foundation.libs.forms.hidden_fix.reset();
$customSelect.removeClass( 'open' );
} // endif
},
refresh_custom_select : function ($select) {
var self = this;
var maxWidth = 0,
$customSelect = $select.next(),
$options = $select.find('option');
$customSelect.find('ul').html('');
$options.each(function () {
var $li = $('<li>' + $(this).html() + '</li>');
$customSelect.find('ul').append($li);
});
// re-populate
$options.each(function (index) {
if (this.selected) {
$customSelect.find('li').eq(index).addClass('selected');
$customSelect.find('.current').html($(this).html());
}
if ($(this).is(':disabled')) {
$customSelect.find('li').eq(index).addClass('disabled');
}
});
// fix width
$customSelect.removeAttr('style')
.find('ul').removeAttr('style');
$customSelect.find('li').each(function () {
$customSelect.addClass('open');
if (self.outerWidth($(this)) > maxWidth) {
maxWidth = self.outerWidth($(this));
}
$customSelect.removeClass('open');
});
},
toggle_checkbox : function ($element) {
var $input = $element.prev(),
input = $input[0];
if (false === $input.is(':disabled')) {
input.checked = ((input.checked) ? false : true);
$element.toggleClass('checked');
$input.trigger('change');
}
},
toggle_radio : function ($element) {
var $input = $element.prev(),
$form = $input.closest('form.custom'),
input = $input[0];
if (false === $input.is(':disabled')) {
$form.find('input[type="radio"][name="' + this.escape($input.attr('name')) + '"]').next().not($element).removeClass('checked');
if ( !$element.hasClass('checked') ) {
$element.toggleClass('checked');
}
input.checked = $element.hasClass('checked');
$input.trigger('change');
}
},
escape : function (text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
},
hidden_fix : {
/**
* Sets all hidden parent elements and self to visibile.
*
* @method adjust
* @param {jQuery Object} $child
*/
// We'll use this to temporarily store style properties.
tmp : [],
// We'll use this to set hidden parent elements.
hidden : null,
adjust : function( $child ) {
// Internal reference.
var _self = this;
// Set all hidden parent elements, including this element.
_self.hidden = $child.parents().andSelf().filter( ":hidden" );
// Loop through all hidden elements.
_self.hidden.each( function() {
// Cache the element.
var $elem = $( this );
// Store the style attribute.
// Undefined if element doesn't have a style attribute.
_self.tmp.push( $elem.attr( 'style' ) );
// Set the element's display property to block,
// but ensure it's visibility is hidden.
$elem.css( { 'visibility' : 'hidden', 'display' : 'block' } );
});
}, // end adjust
/**
* Resets the elements previous state.
*
* @method reset
*/
reset : function() {
// Internal reference.
var _self = this;
// Loop through our hidden element collection.
_self.hidden.each( function( i ) {
// Cache this element.
var $elem = $( this ),
_tmp = _self.tmp[ i ]; // Get the stored 'style' value for this element.
// If the stored value is undefined.
if( _tmp === undefined )
// Remove the style attribute.
$elem.removeAttr( 'style' );
else
// Otherwise, reset the element style attribute.
$elem.attr( 'style', _tmp );
});
// Reset the tmp array.
_self.tmp = [];
// Reset the hidden elements variable.
_self.hidden = null;
} // end reset
},
off : function () {
$(this.scope).off('.fndtn.forms');
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,612 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.joyride = {
name: 'joyride',
version : '4.0.0',
defaults : {
tipLocation : 'bottom', // 'top' or 'bottom' in relation to parent
nubPosition : 'auto', // override on a per tooltip bases
scrollSpeed : 300, // Page scrolling speed in milliseconds
timer : 0, // 0 = no timer , all other numbers = timer in milliseconds
startTimerOnClick : true, // true or false - true requires clicking the first button start the timer
startOffset : 0, // the index of the tooltip you want to start on (index of the li)
nextButton : true, // true or false to control whether a next button is used
tipAnimation : 'fade', // 'pop' or 'fade' in each tip
pauseAfter : [], // array of indexes where to pause the tour after
tipAnimationFadeSpeed: 300, // when tipAnimation = 'fade' this is speed in milliseconds for the transition
cookieMonster : false, // true or false to control whether cookies are used
cookieName : 'joyride', // Name the cookie you'll use
cookieDomain : false, // Will this cookie be attached to a domain, ie. '.notableapp.com'
cookieExpires : 365, // set when you would like the cookie to expire.
tipContainer : 'body', // Where will the tip be attached
postRideCallback : function (){}, // A method to call once the tour closes (canceled or complete)
postStepCallback : function (){}, // A method to call after each step
template : { // HTML segments for tip layout
link : '<a href="#close" class="joyride-close-tip">&times;</a>',
timer : '<div class="joyride-timer-indicator-wrap"><span class="joyride-timer-indicator"></span></div>',
tip : '<div class="joyride-tip-guide"><span class="joyride-nub"></span></div>',
wrapper : '<div class="joyride-content-wrapper"></div>',
button : '<a href="#" class="small button joyride-next-tip"></a>'
}
},
settings : {},
init : function (scope, method, options) {
this.scope = scope || this.scope;
Foundation.inherit(this, 'throttle data_options scrollTo scrollLeft delay');
if (typeof method === 'object') {
$.extend(true, this.settings, this.defaults, method);
} else {
$.extend(true, this.settings, this.defaults, options);
}
if (typeof method != 'string') {
if (!this.settings.init) this.events();
return this.settings.init;
} else {
return this[method].call(this, options);
}
},
events : function () {
var self = this;
$(this.scope)
.on('click.joyride', '.joyride-next-tip, .joyride-modal-bg', function (e) {
e.preventDefault();
if (this.settings.$li.next().length < 1) {
this.end();
} else if (this.settings.timer > 0) {
clearTimeout(this.settings.automate);
this.hide();
this.show();
this.startTimer();
} else {
this.hide();
this.show();
}
}.bind(this))
.on('click.joyride', '.joyride-close-tip', function (e) {
e.preventDefault();
this.end();
}.bind(this));
$(window).on('resize.fndtn.joyride', self.throttle(function () {
if ($('[data-joyride]').length > 0 && self.settings.$next_tip) {
if (self.is_phone()) {
self.pos_phone();
} else {
self.pos_default();
}
}
}, 100));
this.settings.init = true;
},
start : function () {
var self = this,
$this = $(this.scope).find('[data-joyride]'),
integer_settings = ['timer', 'scrollSpeed', 'startOffset', 'tipAnimationFadeSpeed', 'cookieExpires'],
int_settings_count = integer_settings.length;
if (!this.settings.init) this.init();
// non configureable settings
this.settings.$content_el = $this;
this.settings.body_offset = $(this.settings.tipContainer).position();
this.settings.$tip_content = this.settings.$content_el.find('> li');
this.settings.paused = false;
this.settings.attempts = 0;
this.settings.tipLocationPatterns = {
top: ['bottom'],
bottom: [], // bottom should not need to be repositioned
left: ['right', 'top', 'bottom'],
right: ['left', 'top', 'bottom']
};
// can we create cookies?
if (typeof $.cookie !== 'function') {
this.settings.cookieMonster = false;
}
// generate the tips and insert into dom.
if (!this.settings.cookieMonster || this.settings.cookieMonster && $.cookie(this.settings.cookieName) === null) {
this.settings.$tip_content.each(function (index) {
var $this = $(this);
$.extend(true, self.settings, self.data_options($this));
// Make sure that settings parsed from data_options are integers where necessary
for (var i = int_settings_count - 1; i >= 0; i--) {
self.settings[integer_settings[i]] = parseInt(self.settings[integer_settings[i]], 10);
}
self.create({$li : $this, index : index});
});
// show first tip
if (!this.settings.startTimerOnClick && this.settings.timer > 0) {
this.show('init');
this.startTimer();
} else {
this.show('init');
}
}
},
resume : function () {
this.set_li();
this.show();
},
tip_template : function (opts) {
var $blank, content;
opts.tip_class = opts.tip_class || '';
$blank = $(this.settings.template.tip).addClass(opts.tip_class);
content = $.trim($(opts.li).html()) +
this.button_text(opts.button_text) +
this.settings.template.link +
this.timer_instance(opts.index);
$blank.append($(this.settings.template.wrapper));
$blank.first().attr('data-index', opts.index);
$('.joyride-content-wrapper', $blank).append(content);
return $blank[0];
},
timer_instance : function (index) {
var txt;
if ((index === 0 && this.settings.startTimerOnClick && this.settings.timer > 0) || this.settings.timer === 0) {
txt = '';
} else {
txt = this.outerHTML($(this.settings.template.timer)[0]);
}
return txt;
},
button_text : function (txt) {
if (this.settings.nextButton) {
txt = $.trim(txt) || 'Next';
txt = this.outerHTML($(this.settings.template.button).append(txt)[0]);
} else {
txt = '';
}
return txt;
},
create : function (opts) {
var buttonText = opts.$li.attr('data-button') || opts.$li.attr('data-text'),
tipClass = opts.$li.attr('class'),
$tip_content = $(this.tip_template({
tip_class : tipClass,
index : opts.index,
button_text : buttonText,
li : opts.$li
}));
$(this.settings.tipContainer).append($tip_content);
},
show : function (init) {
var $timer = null;
// are we paused?
if (this.settings.$li === undefined
|| ($.inArray(this.settings.$li.index(), this.settings.pauseAfter) === -1)) {
// don't go to the next li if the tour was paused
if (this.settings.paused) {
this.settings.paused = false;
} else {
this.set_li(init);
}
this.settings.attempts = 0;
if (this.settings.$li.length && this.settings.$target.length > 0) {
this.settings.tipSettings = $.extend(this.settings, this.data_options(this.settings.$li));
this.settings.timer = parseInt(this.settings.timer, 10);
this.settings.tipSettings.tipLocationPattern = this.settings.tipLocationPatterns[this.settings.tipSettings.tipLocation];
// scroll if not modal
if (!/body/i.test(this.settings.$target.selector)) {
this.scroll_to();
}
if (this.is_phone()) {
this.pos_phone(true);
} else {
this.pos_default(true);
}
$timer = this.settings.$next_tip.find('.joyride-timer-indicator');
if (/pop/i.test(this.settings.tipAnimation)) {
$timer.width(0);
if (thsi.settings.timer > 0) {
this.settings.$next_tip.show();
this.delay(function () {
$timer.animate({
width: $timer.parent().width()
}, this.settings.timer, 'linear');
}.bind(this), this.settings.tipAnimationFadeSpeed);
} else {
this.settings.$next_tip.show();
}
} else if (/fade/i.test(this.settings.tipAnimation)) {
$timer.width(0);
if (this.settings.timer > 0) {
this.settings.$next_tip
.fadeIn(this.settings.tipAnimationFadeSpeed)
.show();
this.delay(function () {
$timer.animate({
width: $timer.parent().width()
}, this.settings.timer, 'linear');
}.bind(this), this.settings.tipAnimationFadeSpeed);
} else {
this.settings.$next_tip.fadeIn(this.settings.tipAnimationFadeSpeed);
}
}
this.settings.$current_tip = this.settings.$next_tip;
// skip non-existant targets
} else if (this.settings.$li && this.settings.$target.length < 1) {
this.show();
} else {
this.end();
}
} else {
this.settings.paused = true;
}
},
is_phone : function () {
if (Modernizr) {
return Modernizr.mq('only screen and (max-width: 767px)') || $('.lt-ie9').length > 0;
}
return (this.settings.$window.width() < 767) ? true : false;
},
hide : function () {
this.settings.postStepCallback(this.settings.$li.index(),
this.settings.$current_tip);
$('.joyride-modal-bg').hide();
this.settings.$current_tip.hide();
},
set_li : function (init) {
if (init) {
this.settings.$li = this.settings.$tip_content.eq(this.settings.startOffset);
this.set_next_tip();
this.settings.$current_tip = this.settings.$next_tip;
} else {
this.settings.$li = this.settings.$li.next();
this.set_next_tip();
}
this.set_target();
},
set_next_tip : function () {
this.settings.$next_tip = $(".joyride-tip-guide[data-index='" + this.settings.$li.index() + "']");
this.settings.$next_tip.data('closed', '');
},
set_target : function () {
var cl = this.settings.$li.attr('data-class'),
id = this.settings.$li.attr('data-id'),
$sel = function () {
if (id) {
return $(document.getElementById(id));
} else if (cl) {
return $('.' + cl).first();
} else {
return $('body');
}
};
this.settings.$target = $sel();
},
scroll_to : function () {
var window_half, tipOffset;
window_half = $(window).height() / 2;
tipOffset = Math.ceil(this.settings.$target.offset().top - window_half + this.outerHeight(this.settings.$next_tip));
if (tipOffset > 0) {
this.scrollTo($('html, body'), tipOffset, this.settings.scrollSpeed);
}
},
paused : function () {
if (($.inArray((this.settings.$li.index() + 1), this.settings.pauseAfter) === -1)) {
return true;
}
return false;
},
restart : function () {
this.hide();
this.settings.$li = undefined;
this.show('init');
},
pos_default : function (init) {
var half_fold = Math.ceil($(window).height() / 2),
tip_position = this.settings.$next_tip.offset(),
$nub = this.settings.$next_tip.find('.joyride-nub'),
nub_height = Math.ceil(this.outerHeight($nub) / 2),
toggle = init || false;
// tip must not be "display: none" to calculate position
if (toggle) {
this.settings.$next_tip.css('visibility', 'hidden');
this.settings.$next_tip.show();
}
if (!/body/i.test(this.settings.$target.selector)) {
if (this.bottom()) {
this.settings.$next_tip.css({
top: (this.settings.$target.offset().top + nub_height + this.outerHeight(this.settings.$target)),
left: this.settings.$target.offset().left});
this.nub_position($nub, this.settings.tipSettings.nubPosition, 'top');
} else if (this.top()) {
this.settings.$next_tip.css({
top: (this.settings.$target.offset().top - this.outerHeight(this.settings.$next_tip) - nub_height),
left: this.settings.$target.offset().left});
this.nub_position($nub, this.settings.tipSettings.nubPosition, 'bottom');
} else if (this.right()) {
this.settings.$next_tip.css({
top: this.settings.$target.offset().top,
left: (this.outerWidth(this.settings.$target) + this.settings.$target.offset().left)});
this.nub_position($nub, this.settings.tipSettings.nubPosition, 'left');
} else if (this.left()) {
this.settings.$next_tip.css({
top: this.settings.$target.offset().top,
left: (this.settings.$target.offset().left - this.outerWidth(this.settings.$next_tip) - nub_height)});
this.nub_position($nub, this.settings.tipSettings.nubPosition, 'right');
}
if (!this.visible(this.corners(this.settings.$next_tip)) && this.settings.attempts < this.settings.tipSettings.tipLocationPattern.length) {
$nub.removeClass('bottom')
.removeClass('top')
.removeClass('right')
.removeClass('left');
this.settings.tipSettings.tipLocation = this.settings.tipSettings.tipLocationPattern[this.settings.attempts];
this.settings.attempts++;
this.pos_default(true);
}
} else if (this.settings.$li.length) {
this.pos_modal($nub);
}
if (toggle) {
this.settings.$next_tip.hide();
this.settings.$next_tip.css('visibility', 'visible');
}
},
pos_phone : function (init) {
var tip_height = this.outerHeight(this.settings.$next_tip),
tip_offset = this.settings.$next_tip.offset(),
target_height = this.outerHeight(this.settings.$target),
$nub = $('.joyride-nub', this.settings.$next_tip),
nub_height = Math.ceil(this.outerHeight($nub) / 2),
toggle = init || false;
$nub.removeClass('bottom')
.removeClass('top')
.removeClass('right')
.removeClass('left');
if (toggle) {
this.settings.$next_tip.css('visibility', 'hidden');
this.settings.$next_tip.show();
}
if (!/body/i.test(this.settings.$target.selector)) {
if (this.top()) {
this.settings.$next_tip.offset({top: this.settings.$target.offset().top - tip_height - nub_height});
$nub.addClass('bottom');
} else {
this.settings.$next_tip.offset({top: this.settings.$target.offset().top + target_height + nub_height});
$nub.addClass('top');
}
} else if (this.settings.$li.length) {
this.pos_modal($nub);
}
if (toggle) {
this.settings.$next_tip.hide();
this.settings.$next_tip.css('visibility', 'visible');
}
},
pos_modal : function ($nub) {
this.center();
$nub.hide();
if (!this.settings.$next_tip.data('closed')) {
if ($('.joyride-modal-bg').length < 1) {
$('body').append('<div class="joyride-modal-bg">').show();
}
if (/pop/i.test(this.settings.tipAnimation)) {
$('.joyride-modal-bg').show();
} else {
$('.joyride-modal-bg').fadeIn(this.settings.tipAnimationFadeSpeed);
}
}
},
center : function () {
var $w = $(window);
this.settings.$next_tip.css({
top : ((($w.height() - this.outerHeight(this.settings.$next_tip)) / 2) + $w.scrollTop()),
left : ((($w.width() - this.outerWidth(this.settings.$next_tip)) / 2) + this.scrollLeft($w))
});
return true;
},
bottom : function () {
return /bottom/i.test(this.settings.tipSettings.tipLocation);
},
top : function () {
return /top/i.test(this.settings.tipSettings.tipLocation);
},
right : function () {
return /right/i.test(this.settings.tipSettings.tipLocation);
},
left : function () {
return /left/i.test(this.settings.tipSettings.tipLocation);
},
corners : function (el) {
var w = $(window),
right = w.width() + this.scrollLeft(w),
bottom = w.width() + w.scrollTop();
return [
el.offset().top <= w.scrollTop(),
right <= el.offset().left + this.outerWidth(el),
bottom <= el.offset().top + this.outerHeight(el),
this.scrollLeft(w) >= el.offset().left
];
},
visible : function (hidden_corners) {
var i = hidden_corners.length;
while (i--) {
if (hidden_corners[i]) return false;
}
return true;
},
nub_position : function (nub, pos, def) {
if (pos === 'auto') {
nub.addClass(def);
} else {
nub.addClass(pos);
}
},
startTimer : function () {
if (this.settings.$li.length) {
this.settings.automate = setTimeout(function () {
this.hide();
this.show();
this.startTimer();
}.bind(this), this.settings.timer);
} else {
clearTimeout(this.settings.automate);
}
},
end : function () {
if (this.settings.cookieMonster) {
$.cookie(this.settings.cookieName, 'ridden', { expires: this.settings.cookieExpires, domain: this.settings.cookieDomain });
}
if (this.settings.timer > 0) {
clearTimeout(this.settings.automate);
}
this.settings.$next_tip.data('closed', true);
$('.joyride-modal-bg').hide();
this.settings.$current_tip.hide();
this.settings.postStepCallback(this.settings.$li.index(), this.settings.$current_tip);
this.settings.postRideCallback(this.settings.$li.index(), this.settings.$current_tip);
},
outerHTML : function (el) {
// support FireFox < 11
return el.outerHTML || new XMLSerializer().serializeToString(el);
},
off : function () {
$(this.scope).off('.joyride');
$(window).off('.joyride');
$('.joyride-close-tip, .joyride-next-tip, .joyride-modal-bg').off('.joyride');
$('.joyride-tip-guide, .joyride-modal-bg').remove();
clearTimeout(this.settings.automate);
this.settings = {};
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,372 @@
/*
* Foundation Responsive Library
* http://foundation.zurb.com
* Copyright 2013, ZURB
* Free to use under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
*/
/*jslint unparam: true, browser: true, indent: 2 */
// Accommodate running jQuery or Zepto in noConflict() mode by
// using an anonymous function to redefine the $ shorthand name.
// See http://docs.jquery.com/Using_jQuery_with_Other_Libraries
// and http://zeptojs.com/
var libFuncName = null;
if (typeof jQuery === "undefined" &&
typeof Zepto === "undefined" &&
typeof $ === "function") {
libFuncName = $;
} else if (typeof jQuery === "function") {
libFuncName = jQuery;
} else if (typeof Zepto === "function") {
libFuncName = Zepto;
} else {
throw new TypeError();
}
(function ($) {
(function () {
// add dusty browser stuff
if (!Array.prototype.filter) {
Array.prototype.filter = function(fun /*, thisp */) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this),
len = t.length >>> 0;
if (typeof fun != "function") {
try {
throw new TypeError();
} catch (e) {
return;
}
}
var res = [],
thisp = arguments[1];
for (var i = 0; i < len; i++) {
if (i in t) {
var val = t[i]; // in case fun mutates this
if (fun && fun.call(thisp, val, i, t)) {
res.push(val);
}
}
}
return res;
};
if (!Function.prototype.bind) {
Function.prototype.bind = function (oThis) {
if (typeof this !== "function") {
// closest thing possible to the ECMAScript 5 internal IsCallable function
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
fNOP = function () {},
fBound = function () {
return fToBind.apply(this instanceof fNOP && oThis
? this
: oThis,
aArgs.concat(Array.prototype.slice.call(arguments)));
};
fNOP.prototype = this.prototype;
fBound.prototype = new fNOP();
return fBound;
};
}
}
// fake stop() for zepto.
$.fn.stop = $.fn.stop || function() {
return this;
};
}());
;(function (window, document, undefined) {
'use strict';
window.Foundation = {
name : 'Foundation',
version : '4.0.8',
// global Foundation cache object
cache : {},
init : function (scope, libraries, method, options, response, /* internal */ nc) {
var library_arr,
args = [scope, method, options, response],
responses = [],
nc = nc || false;
// disable library error catching,
// used for development only
if (nc) this.nc = nc;
// set foundation global scope
this.scope = scope || this.scope;
if (libraries && typeof libraries === 'string') {
if (/off/i.test(libraries)) return this.off();
library_arr = libraries.split(' ');
if (library_arr.length > 0) {
for (var i = library_arr.length - 1; i >= 0; i--) {
responses.push(this.init_lib(library_arr[i], args));
}
}
} else {
for (var lib in this.libs) {
responses.push(this.init_lib(lib, args));
}
}
// if first argument is callback, add to args
if (typeof libraries === 'function') {
args.unshift(libraries);
}
return this.response_obj(responses, args);
},
response_obj : function (response_arr, args) {
for (var callback in args) {
if (typeof args[callback] === 'function') {
return args[callback]({
errors: response_arr.filter(function (s) {
if (typeof s === 'string') return s;
})
});
}
}
return response_arr;
},
init_lib : function (lib, args) {
return this.trap(function () {
if (this.libs.hasOwnProperty(lib)) {
this.patch(this.libs[lib]);
return this.libs[lib].init.apply(this.libs[lib], args);
}
}.bind(this), lib);
},
trap : function (fun, lib) {
if (!this.nc) {
try {
return fun();
} catch (e) {
return this.error({name: lib, message: 'could not be initialized', more: e.name + ' ' + e.message});
}
}
return fun();
},
patch : function (lib) {
this.fix_outer(lib);
},
inherit : function (scope, methods) {
var methods_arr = methods.split(' ');
for (var i = methods_arr.length - 1; i >= 0; i--) {
if (this.lib_methods.hasOwnProperty(methods_arr[i])) {
this.libs[scope.name][methods_arr[i]] = this.lib_methods[methods_arr[i]];
}
}
},
random_str : function (length) {
var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split('');
if (!length) {
length = Math.floor(Math.random() * chars.length);
}
var str = '';
for (var i = 0; i < length; i++) {
str += chars[Math.floor(Math.random() * chars.length)];
}
return str;
},
libs : {},
// methods that can be inherited in libraries
lib_methods : {
set_data : function (node, data) {
// this.name references the name of the library calling this method
var id = [this.name,+new Date(),Foundation.random_str(5)].join('-');
Foundation.cache[id] = data;
node.attr('data-' + this.name + '-id', id);
return data;
},
get_data : function (node) {
return Foundation.cache[node.attr('data-' + this.name + '-id')];
},
remove_data : function (node) {
if (node) {
delete Foundation.cache[node.attr('data-' + this.name + '-id')];
node.attr('data-' + this.name + '-id', '');
} else {
$('[data-' + this.name + '-id]').each(function () {
delete Foundation.cache[$(this).attr('data-' + this.name + '-id')];
$(this).attr('data-' + this.name + '-id', '');
});
}
},
throttle : function(fun, delay) {
var timer = null;
return function () {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fun.apply(context, args);
}, delay);
};
},
// parses data-options attribute on nodes and turns
// them into an object
data_options : function (el) {
var opts = {}, ii, p,
opts_arr = (el.attr('data-options') || ':').split(';'),
opts_len = opts_arr.length;
function isNumber (o) {
return ! isNaN (o-0) && o !== null && o !== "" && o !== false && o !== true;
}
function trim(str) {
if (typeof str === 'string') return $.trim(str);
return str;
}
// parse options
for (ii = opts_len - 1; ii >= 0; ii--) {
p = opts_arr[ii].split(':');
if (/true/i.test(p[1])) p[1] = true;
if (/false/i.test(p[1])) p[1] = false;
if (isNumber(p[1])) p[1] = parseInt(p[1], 10);
if (p.length === 2 && p[0].length > 0) {
opts[trim(p[0])] = trim(p[1]);
}
}
return opts;
},
delay : function (fun, delay) {
return setTimeout(fun, delay);
},
// animated scrolling
scrollTo : function (el, to, duration) {
if (duration < 0) return;
var difference = to - $(window).scrollTop();
var perTick = difference / duration * 10;
this.scrollToTimerCache = setTimeout(function() {
if (!isNaN(parseInt(perTick, 10))) {
window.scrollTo(0, $(window).scrollTop() + perTick);
this.scrollTo(el, to, duration - 10);
}
}.bind(this), 10);
},
// not supported in core Zepto
scrollLeft : function (el) {
if (!el.length) return;
return ('scrollLeft' in el[0]) ? el[0].scrollLeft : el[0].pageXOffset;
},
// test for empty object or array
empty : function (obj) {
if (obj.length && obj.length > 0) return false;
if (obj.length && obj.length === 0) return true;
for (var key in obj) {
if (hasOwnProperty.call(obj, key)) return false;
}
return true;
}
},
fix_outer : function (lib) {
lib.outerHeight = function (el, bool) {
if (typeof Zepto === 'function') {
return el.height();
}
if (typeof bool !== 'undefined') {
return el.outerHeight(bool);
}
return el.outerHeight();
};
lib.outerWidth = function (el) {
if (typeof Zepto === 'function') {
return el.width();
}
if (typeof bool !== 'undefined') {
return el.outerWidth(bool);
}
return el.outerWidth();
};
},
error : function (error) {
return error.name + ' ' + error.message + '; ' + error.more;
},
// remove all foundation events.
off: function () {
$(this.scope).off('.fndtn');
$(window).off('.fndtn');
return true;
},
zj : function () {
try {
return Zepto;
} catch (e) {
return jQuery;
}
}()
},
$.fn.foundation = function () {
var args = Array.prototype.slice.call(arguments, 0);
return this.each(function () {
Foundation.init.apply(Foundation, [this].concat(args));
return this;
});
};
}(this, this.document));
})(libFuncName);
@@ -0,0 +1,130 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.magellan = {
name : 'magellan',
version : '4.0.0',
settings : {
activeClass: 'active'
},
init : function (scope, method, options) {
this.scope = scope || this.scope;
Foundation.inherit(this, 'data_options');
if (typeof method === 'object') {
$.extend(true, this.settings, method);
}
if (typeof method != 'string') {
if (!this.settings.init) {
this.fixed_magellan = $("[data-magellan-expedition]");
this.set_threshold();
this.last_destination = $('[data-magellan-destination]').last();
this.events();
}
return this.settings.init;
} else {
return this[method].call(this, options);
}
},
events : function () {
var self = this;
$(this.scope).on('arrival.fndtn.magellan', '[data-magellan-arrival]', function (e) {
var $destination = $(this),
$expedition = $destination.closest('[data-magellan-expedition]'),
activeClass = $expedition.attr('data-magellan-active-class')
|| self.settings.activeClass;
$destination
.closest('[data-magellan-expedition]')
.find('[data-magellan-arrival]')
.not($destination)
.removeClass(activeClass);
$destination.addClass(activeClass);
});
this.fixed_magellan
.on('update-position.fndtn.magellan', function(){
var $el = $(this);
// $el.data("magellan-fixed-position","");
//$el.data("magellan-top-offset", "");
})
.trigger('update-position');
$(window)
.on('resize.fndtn.magellan', function() {
this.fixed_magellan.trigger('update-position');
}.bind(this))
.on('scroll.fndtn.magellan', function() {
var windowScrollTop = $(window).scrollTop();
self.fixed_magellan.each(function() {
var $expedition = $(this);
if (typeof $expedition.data('magellan-top-offset') === 'undefined') {
$expedition.data('magellan-top-offset', $expedition.offset().top);
}
if (typeof $expedition.data('magellan-fixed-position') === 'undefined') {
$expedition.data('magellan-fixed-position', false)
}
var fixed_position = (windowScrollTop + self.settings.threshold) > $expedition.data("magellan-top-offset");
var attr = $expedition.attr('data-magellan-top-offset');
if ($expedition.data("magellan-fixed-position") != fixed_position) {
$expedition.data("magellan-fixed-position", fixed_position);
if (fixed_position) {
$expedition.css({position:"fixed", top:0});
} else {
$expedition.css({position:"", top:""});
}
if (fixed_position && typeof attr != 'undefined' && attr != false) {
$expedition.css({position:"fixed", top:attr + "px"});
}
}
});
});
if (this.last_destination.length > 0) {
$(window).on('scroll.fndtn.magellan', function (e) {
var windowScrollTop = $(window).scrollTop(),
scrolltopPlusHeight = windowScrollTop + $(window).height(),
lastDestinationTop = Math.ceil(self.last_destination.offset().top);
$('[data-magellan-destination]').each(function () {
var $destination = $(this),
destination_name = $destination.attr('data-magellan-destination'),
topOffset = $destination.offset().top - windowScrollTop;
if (topOffset <= self.settings.threshold) {
$("[data-magellan-arrival='" + destination_name + "']").trigger('arrival');
}
// 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
if (scrolltopPlusHeight >= $(self.scope).height() && lastDestinationTop > windowScrollTop && lastDestinationTop < scrolltopPlusHeight) {
$('[data-magellan-arrival]').last().trigger('arrival');
}
});
});
}
this.settings.init = true;
},
set_threshold : function () {
if (!this.settings.threshold) {
this.settings.threshold = (this.fixed_magellan.length > 0) ?
this.outerHeight(this.fixed_magellan, true) : 0;
}
},
off : function () {
$(this.scope).off('.fndtn.magellan');
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,365 @@
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs = Foundation.libs || {};
Foundation.libs.orbit = {
name: 'orbit',
version: '4.0.0',
settings: {
timer_speed: 10000,
animation_speed: 500,
bullets: true,
stack_on_small: true,
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 (scope, method, options) {
var self = this;
Foundation.inherit(self, 'data_options');
if (typeof method === 'object') {
$.extend(true, self.settings, method);
}
$('[data-orbit]', scope).each(function(idx, el) {
var scoped_self = $.extend(true, {}, self);
scoped_self._init(idx, el);
});
},
_container_html: function() {
var self = this;
return '<div class="' + self.settings.container_class + '"></div>';
},
_bullets_container_html: function($slides) {
var self = this,
$list = $('<ol class="' + self.settings.bullets_container_class + '"></ol>');
$slides.each(function(idx, slide) {
var $item = $('<li data-orbit-slide-number="' + (idx+1) + '" class=""></li>');
if (idx === 0) {
$item.addClass(self.settings.bullets_active_class);
}
$list.append($item);
});
return $list;
},
_slide_number_html: function(slide_number, total_slides) {
var self = this,
$container = $('<div class="' + self.settings.slide_number_class + '"></div>');
$container.append('<span>' + slide_number + '</span> of <span>' + total_slides + '</span>');
return $container;
},
_timer_html: function() {
var self = this;
if (typeof self.settings.timer_speed === 'number' && self.settings.timer_speed > 0) {
return '<div class="' + self.settings.timer_container_class
+ '"><span></span><div class="' + self.settings.timer_progress_class
+ '"></div></div>';
} else {
return '';
}
},
_next_html: function() {
var self = this;
return '<a href="#" class="' + self.settings.next_class + '">Next <span></span></a>';
},
_prev_html: function() {
var self = this;
return '<a href="#" class="' + self.settings.prev_class + '">Prev <span></span></a>';
},
_init: function (idx, slider) {
var self = this,
$slides_container = $(slider),
$container = $slides_container.wrap(self._container_html()).parent(),
$slides = $slides_container.children();
$.extend(true, self.settings, self.data_options($slides_container));
$container.append(self._prev_html());
$container.append(self._next_html());
$slides_container.addClass(self.settings.slides_container_class);
if (self.settings.stack_on_small) {
$container.addClass(self.settings.stack_on_small_class);
}
$container.append(self._slide_number_html(1, $slides.length));
$container.append(self._timer_html());
if (self.settings.bullets) {
$container.after(self._bullets_container_html($slides));
}
// To better support the "sliding" effect it's easier
// if we just clone the first and last slides
$slides_container.append($slides.first().clone().attr('data-orbit-slide',''));
$slides_container.prepend($slides.last().clone().attr('data-orbit-slide',''));
// Make the first "real" slide active
$slides_container.css('marginLeft', '-100%');
$slides.first().addClass(self.settings.active_slide_class);
self._init_events($slides_container);
self._init_dimensions($slides_container);
self._start_timer($slides_container);
},
_init_events: function ($slides_container) {
var self = this,
$container = $slides_container.parent();
$(window)
.on('load.fndtn.orbit', function() {
$slides_container.height('');
$slides_container.height($slides_container.height($container.height()));
$slides_container.trigger('orbit:ready');
})
.on('resize.fndtn.orbit', function() {
$slides_container.height('');
$slides_container.height($slides_container.height($container.height()));
});
$(document).on('click.fndtn.orbit', '[data-orbit-link]', function(e) {
e.preventDefault();
var id = $(e.currentTarget).attr('data-orbit-link'),
$slide = $slides_container.find('[data-orbit-slide=' + id + ']').first();
if ($slide.length === 1) {
self._reset_timer($slides_container, true);
self._goto($slides_container, $slide.index(), function() {});
}
});
$container.siblings('.' + self.settings.bullets_container_class)
.on('click.fndtn.orbit', '[data-orbit-slide-number]', function(e) {
e.preventDefault();
self._reset_timer($slides_container, true);
self._goto($slides_container, $(e.currentTarget).data('orbit-slide-number'),function() {});
});
$container
.on('orbit:after-slide-change.fndtn.orbit', function(e, orbit) {
var $slide_number = $container.find('.' + self.settings.slide_number_class);
if ($slide_number.length === 1) {
$slide_number.replaceWith(self._slide_number_html(orbit.slide_number, orbit.total_slides));
}
})
.on('orbit:next-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.next_class, function(e) {
e.preventDefault();
self._reset_timer($slides_container, true);
self._goto($slides_container, 'next', function() {});
})
.on('orbit:prev-slide.fndtn.orbit click.fndtn.orbit', '.' + self.settings.prev_class, function(e) {
e.preventDefault();
self._reset_timer($slides_container, true);
self._goto($slides_container, 'prev', function() {});
})
.on('orbit:toggle-play-pause.fndtn.orbit click.fndtn.orbit touchstart.fndtn.orbit', '.' + self.settings.timer_container_class, function(e) {
e.preventDefault();
var $timer = $(e.currentTarget).toggleClass(self.settings.timer_paused_class),
$slides_container = $timer.closest('.' + self.settings.container_class)
.find('.' + self.settings.slides_container_class);
if ($timer.hasClass(self.settings.timer_paused_class)) {
self._stop_timer($slides_container);
} else {
self._start_timer($slides_container);
}
})
.on('touchstart.fndtn.orbit', function(e) {
if (!e.touches) { e = e.originalEvent; }
var data = {
start_page_x: e.touches[0].pageX,
start_page_y: e.touches[0].pageY,
start_time: (new Date()).getTime(),
delta_x: 0,
is_scrolling: undefined
};
$container.data('swipe-transition', data);
e.stopPropagation();
})
.on('touchmove.fndtn.orbit', function(e) {
if (!e.touches) { e = e.originalEvent; }
// Ignore pinch/zoom events
if(e.touches.length > 1 || e.scale && e.scale !== 1) return;
var data = $container.data('swipe-transition');
if (typeof data === 'undefined') {
data = {};
}
data.delta_x = e.touches[0].pageX - data.start_page_x;
if ( typeof data.is_scrolling === 'undefined') {
data.is_scrolling = !!( data.is_scrolling || Math.abs(data.delta_x) < Math.abs(e.touches[0].pageY - data.start_page_y) );
}
if (!data.is_scrolling && !data.active) {
e.preventDefault();
self._stop_timer($slides_container);
var direction = (data.delta_x < 0) ? 'next' : 'prev';
data.active = true;
self._goto($slides_container, direction, function() {});
}
})
.on('touchend.fndtn.orbit', function(e) {
$container.data('swipe-transition', {});
e.stopPropagation();
});
},
_init_dimensions: function ($slides_container) {
var $container = $slides_container.parent(),
$slides = $slides_container.children();
$slides_container.css('width', $slides.length * 100 + '%');
$slides.css('width', 100 / $slides.length + '%');
$slides_container.height($container.height());
$slides_container.css('width', $slides.length * 100 + '%');
},
_start_timer: function ($slides_container) {
var self = this,
$container = $slides_container.parent();
var callback = function() {
self._reset_timer($slides_container, false);
self._goto($slides_container, 'next', function() {
self._start_timer($slides_container);
});
};
var $timer = $container.find('.' + self.settings.timer_container_class),
$progress = $timer.find('.' + self.settings.timer_progress_class),
progress_pct = ($progress.width() / $timer.width()),
delay = self.settings.timer_speed - (progress_pct * self.settings.timer_speed);
$progress.animate({'width': '100%'}, delay, 'linear', callback);
$slides_container.trigger('orbit:timer-started');
},
_stop_timer: function ($slides_container) {
var self = this,
$container = $slides_container.parent(),
$timer = $container.find('.' + self.settings.timer_container_class),
$progress = $timer.find('.' + self.settings.timer_progress_class),
progress_pct = $progress.width() / $timer.width()
self._rebuild_timer($container, progress_pct * 100 + '%');
// $progress.stop();
$slides_container.trigger('orbit:timer-stopped');
$timer = $container.find('.' + self.settings.timer_container_class);
$timer.addClass(self.settings.timer_paused_class);
},
_reset_timer: function($slides_container, is_paused) {
var self = this,
$container = $slides_container.parent();
self._rebuild_timer($container, '0%');
if (typeof is_paused === 'boolean' && is_paused) {
var $timer = $container.find('.' + self.settings.timer_container_class);
$timer.addClass(self.settings.timer_paused_class);
}
},
_rebuild_timer: function ($container, width_pct) {
// Zepto is unable to stop animations since they
// are css-based. This is a workaround for that
// limitation, which rebuilds the dom element
// thus stopping the animation
var self = this,
$timer = $container.find('.' + self.settings.timer_container_class),
$new_timer = $(self._timer_html()),
$new_timer_progress = $new_timer.find('.' + self.settings.timer_progress_class);
if (typeof Zepto === 'function') {
$timer.remove();
$container.append($new_timer);
$new_timer_progress.css('width', width_pct);
} else if (typeof jQuery === 'function') {
var $progress = $timer.find('.' + self.settings.timer_progress_class);
$progress.css('width', width_pct);
$progress.stop();
}
},
_goto: function($slides_container, index_or_direction, callback) {
var self = this,
$container = $slides_container.parent(),
$slides = $slides_container.children(),
$active_slide = $slides_container.find('.' + self.settings.active_slide_class),
active_index = $active_slide.index();
if ($container.hasClass(self.settings.orbit_transition_class)) {
return false;
}
if (index_or_direction === 'prev') {
if (active_index === 0) {
active_index = $slides.length - 1;
}
else {
active_index--;
}
}
else if (index_or_direction === 'next') {
active_index = (active_index+1) % $slides.length;
}
else if (typeof index_or_direction === 'number') {
active_index = (index_or_direction % $slides.length);
}
if (active_index === ($slides.length - 1) && index_or_direction === 'next') {
$slides_container.css('marginLeft', '0%');
active_index = 1;
}
else if (active_index === 0 && index_or_direction === 'prev') {
$slides_container.css('marginLeft', '-' + ($slides.length - 1) * 100 + '%');
active_index = $slides.length - 2;
}
// Start transition, make next slide active
$container.addClass(self.settings.orbit_transition_class);
$active_slide.removeClass(self.settings.active_slide_class);
$($slides[active_index]).addClass(self.settings.active_slide_class);
// Make next bullet active
var $bullets = $container.siblings('.' + self.settings.bullets_container_class);
if ($bullets.length === 1) {
$bullets.children().removeClass(self.settings.bullets_active_class);
$($bullets.children()[active_index-1]).addClass(self.settings.bullets_active_class);
}
var new_margin_left = '-' + (active_index * 100) + '%';
// Check to see if animation will occur, otherwise perform
// callbacks manually
$slides_container.trigger('orbit:before-slide-change');
if ($slides_container.css('marginLeft') === new_margin_left) {
$container.removeClass(self.settings.orbit_transition_class);
$slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]);
callback();
} else {
$slides_container.animate({
'marginLeft' : new_margin_left
}, self.settings.animation_speed, 'linear', function() {
$container.removeClass(self.settings.orbit_transition_class);
$slides_container.trigger('orbit:after-slide-change', [{slide_number: active_index, total_slides: $slides_container.children().length - 2}]);
callback();
});
}
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,159 @@
/*! http://mths.be/placeholder v2.0.7 by @mathias
Modified to work with Zepto.js by ZURB
*/
;(function(window, document, $) {
var isInputSupported = 'placeholder' in document.createElement('input'),
isTextareaSupported = 'placeholder' in document.createElement('textarea'),
prototype = $.fn,
valHooks = $.valHooks,
hooks,
placeholder;
if (isInputSupported && isTextareaSupported) {
placeholder = prototype.placeholder = function() {
return this;
};
placeholder.input = placeholder.textarea = true;
} else {
placeholder = prototype.placeholder = function() {
var $this = this;
$this
.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
.not('.placeholder')
.bind({
'focus.placeholder': clearPlaceholder,
'blur.placeholder': setPlaceholder
})
.data('placeholder-enabled', true)
.trigger('blur.placeholder');
return $this;
};
placeholder.input = isInputSupported;
placeholder.textarea = isTextareaSupported;
hooks = {
'get': function(element) {
var $element = $(element);
return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
},
'set': function(element, value) {
var $element = $(element);
if (!$element.data('placeholder-enabled')) {
return element.value = value;
}
if (value == '') {
element.value = value;
// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
if (element != document.activeElement) {
// We can't use `triggerHandler` here because of dummy text/password inputs :(
setPlaceholder.call(element);
}
} else if ($element.hasClass('placeholder')) {
clearPlaceholder.call(element, true, value) || (element.value = value);
} else {
element.value = value;
}
// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
return $element;
}
};
isInputSupported || (valHooks.input = hooks);
isTextareaSupported || (valHooks.textarea = hooks);
$(function() {
// Look for forms
$(document).delegate('form', 'submit.placeholder', function() {
// Clear the placeholder values so they don't get submitted
var $inputs = $('.placeholder', this).each(clearPlaceholder);
setTimeout(function() {
$inputs.each(setPlaceholder);
}, 10);
});
});
// Clear placeholder values upon page reload
$(window).bind('beforeunload.placeholder', function() {
$('.placeholder').each(function() {
this.value = '';
});
});
}
function args(elem) {
// Return an object of element attributes
var newAttrs = {},
rinlinejQuery = /^jQuery\d+$/;
$.each(elem.attributes, function(i, attr) {
if (attr.specified && !rinlinejQuery.test(attr.name)) {
newAttrs[attr.name] = attr.value;
}
});
return newAttrs;
}
function clearPlaceholder(event, value) {
var input = this,
$input = $(input);
if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
if ($input.data('placeholder-password')) {
$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
// If `clearPlaceholder` was called from `$.valHooks.input.set`
if (event === true) {
return $input[0].value = value;
}
$input.focus();
} else {
input.value = '';
$input.removeClass('placeholder');
input == document.activeElement && input.select();
}
}
}
function setPlaceholder() {
var $replacement,
input = this,
$input = $(input),
$origInput = $input,
id = this.id;
if (input.value == '') {
if (input.type == 'password') {
if (!$input.data('placeholder-textinput')) {
try {
$replacement = $input.clone().attr({ 'type': 'text' });
} catch(e) {
$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
}
$replacement
.removeAttr('name')
.data({
'placeholder-password': true,
'placeholder-id': id
})
.bind('focus.placeholder', clearPlaceholder);
$input
.data({
'placeholder-textinput': $replacement,
'placeholder-id': id
})
.before($replacement);
}
$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
// Note: `$input[0] != input` now!
}
$input.addClass('placeholder');
$input[0].value = $input.attr('placeholder');
} else {
$input.removeClass('placeholder');
}
}
}(this, document, Foundation.zj));
@@ -0,0 +1,270 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.reveal = {
name: 'reveal',
version : '4.0.9',
locked : false,
settings : {
animation: 'fadeAndPop',
animationSpeed: 250,
closeOnBackgroundClick: true,
dismissModalClass: 'close-reveal-modal',
bgClass: 'reveal-modal-bg',
open: function(){},
opened: function(){},
close: function(){},
closed: function(){},
bg : $('.reveal-modal-bg'),
css : {
open : {
'opacity': 0,
'visibility': 'visible',
'display' : 'block'
},
close : {
'opacity': 1,
'visibility': 'hidden',
'display': 'none'
}
}
},
init : function (scope, method, options) {
this.scope = scope || this.scope;
Foundation.inherit(this, 'data_options delay');
if (typeof method === 'object') {
$.extend(true, this.settings, method);
}
if (typeof method != 'string') {
this.events();
return this.settings.init;
} else {
return this[method].call(this, options);
}
},
events : function () {
var self = this;
$(this.scope)
.off('.fndtn.reveal')
.on('click.fndtn.reveal', '[data-reveal-id]', function (e) {
e.preventDefault();
if (!self.locked) {
self.locked = true;
self.open.call(self, $(this));
}
})
.on('click.fndtn.reveal touchend.click.fndtn.reveal', this.close_targets(), function (e) {
e.preventDefault();
if (!self.locked) {
self.locked = true;
self.close.call(self, $(this).closest('.reveal-modal'));
}
})
.on('open.fndtn.reveal', '.reveal-modal', this.settings.open)
.on('opened.fndtn.reveal', '.reveal-modal', this.settings.opened)
.on('opened.fndtn.reveal', '.reveal-modal', this.open_video)
.on('close.fndtn.reveal', '.reveal-modal', this.settings.close)
.on('closed.fndtn.reveal', '.reveal-modal', this.settings.closed)
.on('closed.fndtn.reveal', '.reveal-modal', this.close_video);
return true;
},
open : function (target) {
if (target) {
var modal = $('#' + target.data('reveal-id'));
} else {
var modal = $(this.scope);
}
if (!modal.hasClass('open')) {
var open_modal = $('.reveal-modal.open');
if (typeof modal.data('css-top') === 'undefined') {
modal.data('css-top', parseInt(modal.css('top'), 10))
.data('offset', this.cache_offset(modal));
}
modal.trigger('open');
if (open_modal.length < 1) {
this.toggle_bg(modal);
}
this.hide(open_modal, this.settings.css.open);
this.show(modal, this.settings.css.open);
}
},
close : function (modal) {
var modal = modal || $(this.scope),
open_modals = $('.reveal-modal.open');
if (open_modals.length > 0) {
this.locked = true;
modal.trigger('close');
this.toggle_bg(modal);
this.hide(open_modals, this.settings.css.close);
}
},
close_targets : function () {
var base = '.' + this.settings.dismissModalClass;
if (this.settings.closeOnBackgroundClick) {
return base + ', .' + this.settings.bgClass;
}
return base;
},
toggle_bg : function (modal) {
if ($('.reveal-modal-bg').length === 0) {
this.settings.bg = $('<div />', {'class': this.settings.bgClass})
.insertAfter(modal);
}
if (this.settings.bg.filter(':visible').length > 0) {
this.hide(this.settings.bg);
} else {
this.show(this.settings.bg);
}
},
show : function (el, css) {
// is modal
if (css) {
if (/pop/i.test(this.settings.animation)) {
css.top = $(window).scrollTop() - el.data('offset') + 'px';
var end_css = {
top: $(window).scrollTop() + el.data('css-top') + 'px',
opacity: 1
}
return this.delay(function () {
return el
.css(css)
.animate(end_css, this.settings.animationSpeed, 'linear', function () {
this.locked = false;
el.trigger('opened');
}.bind(this))
.addClass('open');
}.bind(this), this.settings.animationSpeed / 2);
}
if (/fade/i.test(this.settings.animation)) {
var end_css = {opacity: 1};
return this.delay(function () {
return el
.css(css)
.animate(end_css, this.settings.animationSpeed, 'linear', function () {
this.locked = false;
el.trigger('opened');
}.bind(this))
.addClass('open');
}.bind(this), this.settings.animationSpeed / 2);
}
return el.css(css).show().css({opacity: 1}).addClass('open').trigger('opened');
}
// should we animate the background?
if (/fade/i.test(this.settings.animation)) {
return el.fadeIn(this.settings.animationSpeed / 2);
}
return el.show();
},
hide : function (el, css) {
// is modal
if (css) {
if (/pop/i.test(this.settings.animation)) {
var end_css = {
top: - $(window).scrollTop() - el.data('offset') + 'px',
opacity: 0
};
return this.delay(function () {
return el
.animate(end_css, this.settings.animationSpeed, 'linear', function () {
this.locked = false;
el.css(css).trigger('closed');
}.bind(this))
.removeClass('open');
}.bind(this), this.settings.animationSpeed / 2);
}
if (/fade/i.test(this.settings.animation)) {
var end_css = {opacity: 0};
return this.delay(function () {
return el
.animate(end_css, this.settings.animationSpeed, 'linear', function () {
this.locked = false;
el.css(css).trigger('closed');
}.bind(this))
.removeClass('open');
}.bind(this), this.settings.animationSpeed / 2);
}
return el.hide().css(css).removeClass('open').trigger('closed');
}
// should we animate the background?
if (/fade/i.test(this.settings.animation)) {
return el.fadeOut(this.settings.animationSpeed / 2);
}
return el.hide();
},
close_video : function (e) {
var video = $(this).find('.flex-video'),
iframe = video.find('iframe');
if (iframe.length > 0) {
iframe.attr('data-src', iframe[0].src);
iframe.attr('src', 'about:blank');
video.fadeOut(100).hide();
}
},
open_video : function (e) {
var video = $(this).find('.flex-video'),
iframe = video.find('iframe');
if (iframe.length > 0) {
var data_src = iframe.attr('data-src');
if (typeof data_src === 'string') {
iframe[0].src = iframe.attr('data-src');
}
video.show().fadeIn(100);
}
},
cache_offset : function (modal) {
var offset = modal.show().height() + parseInt(modal.css('top'), 10);
modal.hide();
return offset;
},
off : function () {
$(this.scope).off('.fndtn.reveal');
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,272 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.section = {
name: 'section',
version : '4.0.9',
settings : {
deep_linking: false,
one_up: true,
callback: function (){}
},
init : function (scope, method, options) {
var self = this;
this.scope = scope || this.scope;
Foundation.inherit(this, 'throttle data_options');
if (typeof method != 'string') {
this.set_active_from_hash();
this.events();
return true;
} else {
return this[method].call(this, options);
}
},
events : function () {
var self = this;
$(this.scope)
.on('click.fndtn.section', '[data-section] .title', function (e) {
var $this = $(this),
section = $this.closest('[data-section]');
self.toggle_active.call(this, e, self);
});
$(window)
.on('resize.fndtn.section', self.throttle(function () {
self.resize.call(this);
}, 30))
.on('hashchange', function () {
if (!self.settings.toggled){
self.set_active_from_hash();
$(this).trigger('resize');
}
}).trigger('resize');
$(document)
.on('click.fndtn.section', function (e) {
if ($(e.target).closest('.title').length < 1) {
$('[data-section="vertical-nav"], [data-section="horizontal-nav"]')
.find('section, .section')
.removeClass('active')
.attr('style', '');
}
});
},
toggle_active : function (e, self) {
var $this = $(this),
section = $this.closest('section, .section'),
content = section.find('.content'),
parent = section.closest('[data-section]'),
self = Foundation.libs.section,
settings = $.extend({}, self.settings, self.data_options(parent));
self.settings.toggled = true;
if (!settings.deep_linking && content.length > 0) {
e.preventDefault();
}
if (section.hasClass('active')) {
if (self.small(parent)
|| self.is_vertical(parent)
|| self.is_horizontal(parent)
|| self.is_accordion(parent)) {
section
.removeClass('active')
.attr('style', '');
}
} else {
var prev_active_section = null,
title_height = self.outerHeight(section.find('.title'));
if (self.small(parent) || settings.one_up) {
prev_active_section = $this.closest('[data-section]').find('section.active, .section.active');
if (self.small(parent)) {
prev_active_section.attr('style', '');
} else {
prev_active_section.attr('style', 'visibility: hidden; padding-top: '+title_height+'px;');
}
}
if (self.small(parent)) {
section.attr('style', '');
} else {
section.css('padding-top', title_height);
}
section.addClass('active');
if (prev_active_section !== null) {
prev_active_section.removeClass('active').attr('style', '');
}
}
setTimeout(function () {
self.settings.toggled = false;
}, 300);
settings.callback();
},
resize : function () {
var sections = $('[data-section]'),
self = Foundation.libs.section;
sections.each(function() {
var $this = $(this),
active_section = $this.find('section.active, .section.active'),
settings = $.extend({}, self.settings, self.data_options($this));
if (active_section.length > 1) {
active_section
.not(':first')
.removeClass('active')
.attr('style', '');
} else if (active_section.length < 1
&& !self.is_vertical($this)
&& !self.is_horizontal($this)
&& !self.is_accordion($this)) {
var first = $this.find('section, .section').first();
first.addClass('active');
if (self.small($this)) {
first.attr('style', '');
} else {
first.css('padding-top', self.outerHeight(first.find('.title')));
}
}
if (self.small($this)) {
active_section.attr('style', '');
} else {
active_section.css('padding-top', self.outerHeight(active_section.find('.title')));
}
self.position_titles($this);
if (self.is_horizontal($this) && !self.small($this)) {
self.position_content($this);
} else {
self.position_content($this, false);
}
});
},
is_vertical : function (el) {
return /vertical-nav/i.test(el.data('section'));
},
is_horizontal : function (el) {
return /horizontal-nav/i.test(el.data('section'));
},
is_accordion : function (el) {
return /accordion/i.test(el.data('section'));
},
is_tabs : function (el) {
return /tabs/i.test(el.data('section'));
},
set_active_from_hash : function () {
var hash = window.location.hash.substring(1),
sections = $('[data-section]'),
self = this;
sections.each(function () {
var section = $(this),
settings = $.extend({}, self.settings, self.data_options(section));
if (hash.length > 0 && settings.deep_linking) {
section
.find('section, .section')
.attr('style', '')
.removeClass('active');
section
.find('.content[data-slug="' + hash + '"]')
.closest('section, .section')
.addClass('active');
}
});
},
position_titles : function (section, off) {
var titles = section.find('.title'),
previous_width = 0,
self = this;
if (typeof off === 'boolean') {
titles.attr('style', '');
} else {
titles.each(function () {
$(this).css('left', previous_width);
previous_width += self.outerWidth($(this));
});
}
},
position_content : function (section, off) {
var titles = section.find('.title'),
content = section.find('.content'),
self = this;
if (typeof off === 'boolean') {
content.attr('style', '');
section.attr('style', '');
} else {
section.find('section, .section').each(function () {
var title = $(this).find('.title'),
content = $(this).find('.content');
content.css({left: title.position().left - 1, top: self.outerHeight(title) - 2});
});
// temporary work around for Zepto outerheight calculation issues.
if (typeof Zepto === 'function') {
section.height(this.outerHeight(titles.first()));
} else {
section.height(this.outerHeight(titles.first()) - 2);
}
}
},
small : function (el) {
var settings = $.extend({}, this.settings, this.data_options(el));
if (this.is_tabs(el)) {
return false;
}
if (el && this.is_accordion(el)) {
return true;
}
if ($('html').hasClass('lt-ie9')) {
return true;
}
if ($('html').hasClass('ie8compat')) {
return true;
}
return $(this.scope).width() < 768;
},
off : function () {
$(this.scope).off('.fndtn.section');
$(window).off('.fndtn.section');
$(document).off('.fndtn.section')
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,195 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.tooltips = {
name: 'tooltips',
version : '4.0.2',
settings : {
selector : '.has-tip',
additionalInheritableClasses : [],
tooltipClass : '.tooltip',
tipTemplate : function (selector, content) {
return '<span data-selector="' + selector + '" class="'
+ Foundation.libs.tooltips.settings.tooltipClass.substring(1)
+ '">' + content + '<span class="nub"></span></span>';
}
},
cache : {},
init : function (scope, method, options) {
var self = this;
this.scope = scope || this.scope;
if (typeof method === 'object') {
$.extend(true, this.settings, method);
}
if (typeof method != 'string') {
if (Modernizr.touch) {
$(this.scope)
.on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip',
'[data-tooltip]', function (e) {
e.preventDefault();
$(self.settings.tooltipClass).hide();
self.showOrCreateTip($(this));
})
.on('click.fndtn.tooltip touchstart.fndtn.tooltip touchend.fndtn.tooltip',
this.settings.tooltipClass, function (e) {
e.preventDefault();
$(this).fadeOut(150);
});
} else {
$(this.scope)
.on('mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip',
'[data-tooltip]', function (e) {
var $this = $(this);
if (e.type === 'mouseover' || e.type === 'mouseenter') {
self.showOrCreateTip($this);
} else if (e.type === 'mouseout' || e.type === 'mouseleave') {
self.hide($this);
}
});
}
// $(this.scope).data('fndtn-tooltips', true);
} else {
return this[method].call(this, options);
}
},
showOrCreateTip : function ($target) {
var $tip = this.getTip($target);
if ($tip && $tip.length > 0) {
return this.show($target);
}
return this.create($target);
},
getTip : function ($target) {
var selector = this.selector($target),
tip = null;
if (selector) {
tip = $('span[data-selector=' + selector + ']' + this.settings.tooltipClass);
}
return (typeof tip === 'object') ? tip : false;
},
selector : function ($target) {
var id = $target.attr('id'),
dataSelector = $target.attr('data-tooltip') || $target.attr('data-selector');
if ((id && id.length < 1 || !id) && typeof dataSelector != 'string') {
dataSelector = 'tooltip' + Math.random().toString(36).substring(7);
$target.attr('data-selector', dataSelector);
}
return (id && id.length > 0) ? id : dataSelector;
},
create : function ($target) {
var $tip = $(this.settings.tipTemplate(this.selector($target), $('<div>').html($target.attr('title')).html())),
classes = this.inheritable_classes($target);
$tip.addClass(classes).appendTo('body');
if (Modernizr.touch) {
$tip.append('<span class="tap-to-close">tap to close </span>');
}
$target.removeAttr('title').attr('title','');
this.show($target);
},
reposition : function (target, tip, classes) {
var width, nub, nubHeight, nubWidth, column, objPos;
tip.css('visibility', 'hidden').show();
width = target.data('width');
nub = tip.children('.nub');
nubHeight = this.outerHeight(nub);
nubWidth = this.outerHeight(nub);
objPos = function (obj, top, right, bottom, left, width) {
return obj.css({
'top' : (top) ? top : 'auto',
'bottom' : (bottom) ? bottom : 'auto',
'left' : (left) ? left : 'auto',
'right' : (right) ? right : 'auto',
'width' : (width) ? width : 'auto'
}).end();
};
objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', target.offset().left, width);
if ($(window).width() < 767) {
objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', 12.5, $(this.scope).width());
tip.addClass('tip-override');
objPos(nub, -nubHeight, 'auto', 'auto', target.offset().left);
} else {
objPos(tip, (target.offset().top + this.outerHeight(target) + 10), 'auto', 'auto', target.offset().left, width);
tip.removeClass('tip-override');
if (classes && classes.indexOf('tip-top') > -1) {
objPos(tip, (target.offset().top - this.outerHeight(tip)), 'auto', 'auto', target.offset().left, width)
.removeClass('tip-override');
} else if (classes && classes.indexOf('tip-left') > -1) {
objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left - this.outerWidth(tip) - nubHeight), width)
.removeClass('tip-override');
} else if (classes && classes.indexOf('tip-right') > -1) {
objPos(tip, (target.offset().top + (this.outerHeight(target) / 2) - nubHeight*2.5), 'auto', 'auto', (target.offset().left + this.outerWidth(target) + nubHeight), width)
.removeClass('tip-override');
}
}
tip.css('visibility', 'visible').hide();
},
inheritable_classes : function (target) {
var inheritables = ['tip-top', 'tip-left', 'tip-bottom', 'tip-right', 'noradius'].concat(this.settings.additionalInheritableClasses),
classes = target.attr('class'),
filtered = classes ? $.map(classes.split(' '), function (el, i) {
if ($.inArray(el, inheritables) !== -1) {
return el;
}
}).join(' ') : '';
return $.trim(filtered);
},
show : function ($target) {
var $tip = this.getTip($target);
this.reposition($target, $tip, $target.attr('class'));
$tip.fadeIn(150);
},
hide : function ($target) {
var $tip = this.getTip($target);
$tip.fadeOut(150);
},
// deprecate reload
reload : function () {
var $self = $(this);
return ($self.data('fndtn-tooltips')) ? $self.foundationTooltips('destroy').foundationTooltips('init') : $self.foundationTooltips('init');
},
off : function () {
$(this.scope).off('.fndtn.tooltip');
$(this.settings.tooltipClass).each(function (i) {
$('[data-tooltip]').get(i).attr('title', $(this).text());
}).remove();
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,225 @@
/*jslint unparam: true, browser: true, indent: 2 */
;(function ($, window, document, undefined) {
'use strict';
Foundation.libs.topbar = {
name : 'topbar',
version : '4.0.0',
settings : {
index : 0,
stickyClass : 'sticky',
custom_back_text: true,
back_text: 'Back',
init : false
},
init : function (scope, method, options) {
var self = this;
this.scope = scope || this.scope;
if (typeof method === 'object') {
$.extend(true, this.settings, method);
}
if (typeof method != 'string') {
$('.top-bar').each(function () {
self.settings.$w = $(window);
self.settings.$topbar = $(this);
self.settings.$section = self.settings.$topbar.find('section');
self.settings.$titlebar = self.settings.$topbar.children('ul').first();
self.settings.$topbar.data('index', 0);
var breakpoint = $("<div class='top-bar-js-breakpoint'/>").insertAfter(self.settings.$topbar);
self.settings.breakPoint = breakpoint.width();
breakpoint.remove();
self.assemble();
if (self.settings.$topbar.parent().hasClass('fixed')) {
$('body').css('padding-top', self.outerHeight(self.settings.$topbar));
}
});
if (!self.settings.init) {
this.events();
}
return this.settings.init;
} else {
// fire method
return this[method].call(this, options);
}
},
events : function () {
var self = this;
var offst = this.outerHeight($('.top-bar'));
$(this.scope)
.on('click.fndtn.topbar', '.top-bar .toggle-topbar', function (e) {
var topbar = $(this).closest('.top-bar'),
section = topbar.find('section, .section'),
titlebar = topbar.children('ul').first();
if (!topbar.data('height')) self.largestUL();
e.preventDefault();
if (self.breakpoint()) {
topbar
.toggleClass('expanded')
.css('min-height', '');
}
if (!topbar.hasClass('expanded')) {
section.css({left: '0%'});
section.find('>.name').css({left: '100%'});
section.find('li.moved').removeClass('moved');
topbar.data('index', 0);
}
if (topbar.parent().hasClass('fixed')) {
topbar.parent().removeClass('fixed');
$('body').css('padding-top','0');
window.scrollTo(0);
} else if (topbar.hasClass('fixed expanded')) {
topbar.parent().addClass('fixed');
$('body').css('padding-top',offst);
}
})
.on('click.fndtn.topbar', '.top-bar .has-dropdown>a', function (e) {
var topbar = $(this).closest('.top-bar'),
section = topbar.find('section, .section'),
titlebar = topbar.children('ul').first();
if (Modernizr.touch || self.breakpoint()) {
e.preventDefault();
}
if (self.breakpoint()) {
var $this = $(this),
$selectedLi = $this.closest('li');
topbar.data('index', topbar.data('index') + 1);
$selectedLi.addClass('moved');
section.css({left: -(100 * topbar.data('index')) + '%'});
section.find('>.name').css({left: 100 * topbar.data('index') + '%'});
$this.siblings('ul')
.height(topbar.data('height') + self.outerHeight(titlebar, true));
topbar
.css('min-height', topbar.data('height') + self.outerHeight(titlebar, true) * 2)
}
});
$(window).on('resize.fndtn.topbar', function () {
if (!this.breakpoint()) {
$('.top-bar').css('min-height', '');
}
}.bind(this));
// Go up a level on Click
$(this.scope).on('click.fndtn', '.top-bar .has-dropdown .back', function (e) {
e.preventDefault();
var $this = $(this),
topbar = $this.closest('.top-bar'),
section = topbar.find('section, .section'),
$movedLi = $this.closest('li.moved'),
$previousLevelUl = $movedLi.parent();
topbar.data('index', topbar.data('index') - 1);
section.css({left: -(100 * topbar.data('index')) + '%'});
section.find('>.name').css({'left': 100 * topbar.data('index') + '%'});
if (topbar.data('index') === 0) {
topbar.css('min-height', 0);
}
setTimeout(function () {
$movedLi.removeClass('moved');
}, 300);
});
},
breakpoint : function () {
return $(window).width() <= this.settings.breakPoint || $('html').hasClass('lt-ie9');
},
assemble : function () {
var self = this;
// Pull element out of the DOM for manipulation
this.settings.$section.detach();
this.settings.$section.find('.has-dropdown>a').each(function () {
var $link = $(this),
$dropdown = $link.siblings('.dropdown'),
$titleLi = $('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');
// Copy link to subnav
if (self.settings.custom_back_text == true) {
$titleLi.find('h5>a').html('&laquo; ' + self.settings.back_text);
} else {
$titleLi.find('h5>a').html('&laquo; ' + $link.html());
}
$dropdown.prepend($titleLi);
});
// Put element back in the DOM
this.settings.$section.appendTo(this.settings.$topbar);
// check for sticky
this.sticky();
},
largestUL : function () {
var uls = this.settings.$topbar.find('section ul ul'),
largest = uls.first(),
total = 0,
self = this;
uls.each(function () {
if ($(this).children('li').length > largest.children('li').length) {
largest = $(this);
}
});
largest.children('li').each(function () { total += self.outerHeight($(this), true); });
this.settings.$topbar.data('height', total);
},
sticky : function () {
var klass = '.' + this.settings.stickyClass;
if ($(klass).length > 0) {
var distance = $(klass).length ? $(klass).offset().top: 0,
$window = $(window);
var offst = this.outerHeight($('.top-bar'));
$window.scroll(function() {
if ($window.scrollTop() >= (distance)) {
$(klass).addClass("fixed");
$('body').css('padding-top',offst);
}
else if ($window.scrollTop() < distance) {
$(klass).removeClass("fixed");
$('body').css('padding-top','0');
}
});
}
},
off : function () {
$(this.scope).off('.fndtn.topbar');
$(window).off('.fndtn.topbar');
}
};
}(Foundation.zj, this, this.document));
@@ -0,0 +1,4 @@
/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
* Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load
*/
;window.Modernizr=function(a,b,c){function y(a){j.cssText=a}function z(a,b){return y(m.join(a+";")+(b||""))}function A(a,b){return typeof a===b}function B(a,b){return!!~(""+a).indexOf(b)}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:A(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].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="<svg/>",(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<style>"+b+"</style>",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<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",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=rLine truncated
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+209
View File
@@ -0,0 +1,209 @@
// Global Foundation Settings
@import "settings";
// Comment out this import if you are customizing you imports below
@import "foundation";
// Import specific parts of Foundation by commenting the import "foundation"
// and uncommenting what you want below. You must uncomment the following if customizing
// @import "foundation/foundation-global"; // *always required
// @import "foundation/components/global"; // *always required
// @import "foundation/components/grid";
// @import "foundation/components/visibility";
// @import "foundation/components/block-grid";
// @import "foundation/components/type";
// @import "foundation/components/buttons";
// @import "foundation/components/forms"; // *requires components/buttons
// @import "foundation/components/custom-forms"; // *requires components/buttons, components/forms
// @import "foundation/components/button-groups"; // *requires components/buttons
// @import "foundation/components/dropdown-buttons"; // *requires components/buttons
// @import "foundation/components/split-buttons"; // *requires components/buttons
// @import "foundation/components/flex-video";
// @import "foundation/components/section";
// @import "foundation/components/top-bar"; // *requires components/grid
// @import "foundation/components/orbit";
// @import "foundation/components/reveal";
// @import "foundation/components/joyride";
// @import "foundation/components/clearing";
// @import "foundation/components/alert-boxes";
// @import "foundation/components/breadcrumbs";
// @import "foundation/components/keystrokes";
// @import "foundation/components/labels";
// @import "foundation/components/inline-lists";
// @import "foundation/components/pagination";
// @import "foundation/components/panels";
// @import "foundation/components/pricing-tables";
// @import "foundation/components/progress-bars";
// @import "foundation/components/side-nav";
// @import "foundation/components/sub-nav";
// @import "foundation/components/switch";
// @import "foundation/components/magellan";
// @import "foundation/components/tables";
// @import "foundation/components/thumbs";
// @import "foundation/components/tooltips";
// @import "foundation/components/dropdown";
// My variables
$grey: #2d2b29;
$white: #f2efe5;
// Fonts,
@import url(http://fonts.googleapis.com/css?family=Julius+Sans+One|Cinzel+Decorative|Josefin+Sans);
$headerfont: "Julius Sans One";
$bodyfont: "Josefin Sans";
$prettyfont: "Cinzel Decorative";
// Styling
body,html {
height: 100%;
h1,h2,h3 {
letter-spacing: 0.1em;
}
}
.page-wrapper {
height: 100%;
}
#masthead {
/* hacky */
position: relative;
right: 1.6em;
width: 112%;
background-color: $body-bg;
}
#page {
margin-top: 50px;
background-color: $grey;
.site-title {
font-family: $headerfont;
font-size: 2em;
font-weight: normal;
margin-bottom: 0;
margin-left: 0;
margin-right: 0;
margin-top: 0.15em;
line-height: 1.1;
a {
color: $grey;
}
}
h1 {
}
@media only screen and (min-width: 48em) {
.site-title {
font-size: 4em;
}
}
}
.nav-wrapper {
height: 100%;
background-color: $grey;
text-align: center;
.date-mark {
margin-top: 50px;
img {
margin: 0.7em auto;
}
h3,h2 {
color: $white;
letter-spacing: 0.1em;
}
.date {
padding-top: 1em;
}
.name {
border-top: 1px solid $white;
border-bottom: 1px solid $white;
width: 85%;
margin: 0 auto;
h3 {
font-size: 1.7em;
font-family: $prettyfont;
font-weight: normal;
margin-top: 0.5em;
margin-bottom: 0.2em;
letter-spacing: 0.05em;
}
}
.time {
padding-bottom: 1em;
h2 {
margin-bottom: 0;
}
}
}
#site-navigation {
margin: 2em auto;
.nav-menu {
list-style: none;
li {
width: 100%;
display: inline-block;
a {
display: block;
height: 50px;
margin: 8px auto;
padding-left: 10px;
padding-right: 10px;
line-height: 50px;
width: 50%;
background-color: $primary-color;
color: white;
}
}
}
li.current_page_item {
}
}
}
#content {
.page {
padding-bottom: 1em;
padding-top: 1em;
.entry-content ul{
padding-left: 20px;
}
}
}
#colophon {
position: relative;
.site-info {
position: absolute;
top: -3em;
height: 3em;
line-height: 3em;
background-color: $grey;
}
}
.home #page {
padding-left: 0;
padding-right: 0;
background-image: url("../images/landingbilde.jpg");
min-height: 676px;
}
.front-page-caption {
position: absolute;
bottom: 0;
background-color: rgba($grey, 0.92);
width: 33.3332%;
padding-top: 1em;
padding-left: 1.5625em;
padding-right: 1.5625em;
min-height: 100px;
}
.home #masthead {
padding-left: 1.5625em;
padding-right: 1.5625em;
}
+396
View File
@@ -0,0 +1,396 @@
/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
[hidden] {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
-ms-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Correct font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre-wrap;
}
/**
* Set consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Correct font family not being inherited in all browsers.
* 2. Correct font size not being inherited in all browsers.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 2 */
margin: 0; /* 3 */
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to `content-box` in IE 8/9.
* 2. Remove excess padding in IE 8/9.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto; /* 1 */
vertical-align: top; /* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
Whitespace-only changes.
+11
View File
@@ -0,0 +1,11 @@
/*
Theme Name: Grisefesten 2013
Theme URI: http://kak.neuf.no/
Description: Tema for Grisefesten 2013
Version: 1.0
Author: Nikolai Kristiansen
Author URI: http://nikolaikristiansen.com/
License: MIT License
License URI: http://opensource.org/licenses/MIT
*/
File diff suppressed because it is too large. Load diff
+368
View File
@@ -0,0 +1,368 @@
/* normalize.css v2.1.0 | MIT License | git.io/normalize */
/* ==========================================================================
HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* Correct `inline-block` display not defined in IE 8/9.
*/
audio,
canvas,
video {
display: inline-block;
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
[hidden] {
display: none;
}
/* ==========================================================================
Base
========================================================================== */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif;
/* 1 */
-webkit-text-size-adjust: 100%;
/* 2 */
-ms-text-size-adjust: 100%;
/* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* ==========================================================================
Links
========================================================================== */
/**
* Address `outline` inconsistency between Chrome and other browsers.
*/
a:focus {
outline: thin dotted;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* ==========================================================================
Typography
========================================================================== */
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Correct font family set oddly in Safari 5 and Chrome.
*/
code,
kbd,
pre,
samp {
font-family: monospace, serif;
font-size: 1em;
}
/**
* Improve readability of pre-formatted text in all browsers.
*/
pre {
white-space: pre-wrap;
}
/**
* Set consistent quote types.
*/
q {
quotes: "\201C" "\201D" "\2018" "\2019";
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* ==========================================================================
Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* ==========================================================================
Figures
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 0;
}
/* ==========================================================================
Forms
========================================================================== */
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0;
/* 1 */
padding: 0;
/* 2 */
}
/**
* 1. Correct font family not being inherited in all browsers.
* 2. Correct font size not being inherited in all browsers.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
select,
textarea {
font-family: inherit;
/* 1 */
font-size: 100%;
/* 2 */
margin: 0;
/* 3 */
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
button,
input {
line-height: normal;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
* Correct `select` style inheritance in Firefox 4+ and Opera.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
/* 2 */
cursor: pointer;
/* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* 1. Address box sizing set to `content-box` in IE 8/9.
* 2. Remove excess padding in IE 8/9.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
/* 1 */
padding: 0;
/* 2 */
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield;
/* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
/* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari 5 and Chrome
* on OS X.
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* 1. Remove default vertical scrollbar in IE 8/9.
* 2. Improve readability and alignment in all browsers.
*/
textarea {
overflow: auto;
/* 1 */
vertical-align: top;
/* 2 */
}
/* ==========================================================================
Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}