docs-cambiocds-com-jekyll-theme 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -21
  3. data/README.md +48 -48
  4. data/_layouts/default.html +96 -100
  5. data/assets/css/asciidoctor.css +397 -397
  6. data/assets/css/coderay.css +89 -89
  7. data/assets/css/custom.css +32 -0
  8. data/assets/css/font-awesome.css +1801 -1801
  9. data/assets/css/font-awesome.min.css +3 -3
  10. data/assets/css/foundation.css +8545 -8545
  11. data/assets/css/foundation.min.css +8331 -8331
  12. data/assets/css/normalize.css +427 -427
  13. data/assets/js/foundation.min.js +6069 -6069
  14. data/assets/js/foundation/foundation.abide.js +325 -325
  15. data/assets/js/foundation/foundation.accordion.js +71 -71
  16. data/assets/js/foundation/foundation.alert.js +46 -46
  17. data/assets/js/foundation/foundation.clearing.js +573 -573
  18. data/assets/js/foundation/foundation.dropdown.js +444 -444
  19. data/assets/js/foundation/foundation.equalizer.js +77 -77
  20. data/assets/js/foundation/foundation.interchange.js +349 -349
  21. data/assets/js/foundation/foundation.joyride.js +939 -939
  22. data/assets/js/foundation/foundation.js +691 -691
  23. data/assets/js/foundation/foundation.magellan.js +199 -199
  24. data/assets/js/foundation/foundation.offcanvas.js +154 -154
  25. data/assets/js/foundation/foundation.orbit.js +512 -512
  26. data/assets/js/foundation/foundation.reveal.js +455 -455
  27. data/assets/js/foundation/foundation.slider.js +268 -268
  28. data/assets/js/foundation/foundation.tab.js +221 -221
  29. data/assets/js/foundation/foundation.tooltip.js +301 -301
  30. data/assets/js/foundation/foundation.topbar.js +444 -444
  31. data/assets/js/toc.js +82 -82
  32. data/assets/js/vendor/fastclick.js +169 -169
  33. data/assets/js/vendor/jquery.cookie.js +57 -57
  34. data/assets/js/vendor/jquery.js +2339 -2339
  35. data/assets/js/vendor/modernizr.js +304 -304
  36. data/assets/js/vendor/placeholder.js +75 -75
  37. metadata +12 -11
@@ -1,691 +1,691 @@
1
- /*
2
- * Foundation Responsive Library
3
- * http://foundation.zurb.com
4
- * Copyright 2014, ZURB
5
- * Free to use under the MIT license.
6
- * http://www.opensource.org/licenses/mit-license.php
7
- */
8
-
9
- (function ($, window, document, undefined) {
10
- 'use strict';
11
-
12
- var header_helpers = function (class_array) {
13
- var i = class_array.length;
14
- var head = $('head');
15
-
16
- while (i--) {
17
- if (head.has('.' + class_array[i]).length === 0) {
18
- head.append('<meta class="' + class_array[i] + '" />');
19
- }
20
- }
21
- };
22
-
23
- header_helpers([
24
- 'foundation-mq-small',
25
- 'foundation-mq-small-only',
26
- 'foundation-mq-medium',
27
- 'foundation-mq-medium-only',
28
- 'foundation-mq-large',
29
- 'foundation-mq-large-only',
30
- 'foundation-mq-xlarge',
31
- 'foundation-mq-xlarge-only',
32
- 'foundation-mq-xxlarge',
33
- 'foundation-data-attribute-namespace']);
34
-
35
- // Enable FastClick if present
36
-
37
- $(function () {
38
- if (typeof FastClick !== 'undefined') {
39
- // Don't attach to body if undefined
40
- if (typeof document.body !== 'undefined') {
41
- FastClick.attach(document.body);
42
- }
43
- }
44
- });
45
-
46
- // private Fast Selector wrapper,
47
- // returns jQuery object. Only use where
48
- // getElementById is not available.
49
- var S = function (selector, context) {
50
- if (typeof selector === 'string') {
51
- if (context) {
52
- var cont;
53
- if (context.jquery) {
54
- cont = context[0];
55
- if (!cont) return context;
56
- } else {
57
- cont = context;
58
- }
59
- return $(cont.querySelectorAll(selector));
60
- }
61
-
62
- return $(document.querySelectorAll(selector));
63
- }
64
-
65
- return $(selector, context);
66
- };
67
-
68
- // Namespace functions.
69
-
70
- var attr_name = function (init) {
71
- var arr = [];
72
- if (!init) arr.push('data');
73
- if (this.namespace.length > 0) arr.push(this.namespace);
74
- arr.push(this.name);
75
-
76
- return arr.join('-');
77
- };
78
-
79
- var add_namespace = function (str) {
80
- var parts = str.split('-'),
81
- i = parts.length,
82
- arr = [];
83
-
84
- while (i--) {
85
- if (i !== 0) {
86
- arr.push(parts[i]);
87
- } else {
88
- if (this.namespace.length > 0) {
89
- arr.push(this.namespace, parts[i]);
90
- } else {
91
- arr.push(parts[i]);
92
- }
93
- }
94
- }
95
-
96
- return arr.reverse().join('-');
97
- };
98
-
99
- // Event binding and data-options updating.
100
-
101
- var bindings = function (method, options) {
102
- var self = this,
103
- should_bind_events = !S(this).data(this.attr_name(true));
104
-
105
- if (S(this.scope).is('[' + this.attr_name() + ']')) {
106
- S(this.scope).data(this.attr_name(true) + '-init', $.extend({}, this.settings, (options || method), this.data_options(S(this.scope))));
107
-
108
- if (should_bind_events) {
109
- this.events(this.scope);
110
- }
111
-
112
- } else {
113
- S('[' + this.attr_name() + ']', this.scope).each(function () {
114
- var should_bind_events = !S(this).data(self.attr_name(true) + '-init');
115
- S(this).data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options(S(this))));
116
-
117
- if (should_bind_events) {
118
- self.events(this);
119
- }
120
- });
121
- }
122
- // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.
123
- if (typeof method === 'string') {
124
- return this[method].call(this, options);
125
- }
126
-
127
- };
128
-
129
- var single_image_loaded = function (image, callback) {
130
- function loaded() {
131
- callback(image[0]);
132
- }
133
-
134
- function bindLoad() {
135
- this.one('load', loaded);
136
-
137
- if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
138
- var src = this.attr('src'),
139
- param = src.match(/\?/) ? '&' : '?';
140
-
141
- param += 'random=' + (new Date()).getTime();
142
- this.attr('src', src + param);
143
- }
144
- }
145
-
146
- if (!image.attr('src')) {
147
- loaded();
148
- return;
149
- }
150
-
151
- if (image[0].complete || image[0].readyState === 4) {
152
- loaded();
153
- } else {
154
- bindLoad.call(image);
155
- }
156
- };
157
-
158
- /*
159
- https://github.com/paulirish/matchMedia.js
160
- */
161
-
162
- window.matchMedia = window.matchMedia || (function (doc) {
163
-
164
- 'use strict';
165
-
166
- var bool,
167
- docElem = doc.documentElement,
168
- refNode = docElem.firstElementChild || docElem.firstChild,
169
- // fakeBody required for <FF4 when executed in <head>
170
- fakeBody = doc.createElement('body'),
171
- div = doc.createElement('div');
172
-
173
- div.id = 'mq-test-1';
174
- div.style.cssText = 'position:absolute;top:-100em';
175
- fakeBody.style.background = 'none';
176
- fakeBody.appendChild(div);
177
-
178
- return function (q) {
179
-
180
- div.innerHTML = '&shy;<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>';
181
-
182
- docElem.insertBefore(fakeBody, refNode);
183
- bool = div.offsetWidth === 42;
184
- docElem.removeChild(fakeBody);
185
-
186
- return {
187
- matches: bool,
188
- media: q
189
- };
190
-
191
- };
192
-
193
- }(document));
194
-
195
- /*
196
- * jquery.requestAnimationFrame
197
- * https://github.com/gnarf37/jquery-requestAnimationFrame
198
- * Requires jQuery 1.8+
199
- *
200
- * Copyright (c) 2012 Corey Frang
201
- * Licensed under the MIT license.
202
- */
203
-
204
- (function ($) {
205
-
206
- // requestAnimationFrame polyfill adapted from Erik Möller
207
- // fixes from Paul Irish and Tino Zijdel
208
- // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
209
- // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
210
-
211
- var animating,
212
- lastTime = 0,
213
- vendors = ['webkit', 'moz'],
214
- requestAnimationFrame = window.requestAnimationFrame,
215
- cancelAnimationFrame = window.cancelAnimationFrame,
216
- jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
217
-
218
- for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
219
- requestAnimationFrame = window[vendors[lastTime] + 'RequestAnimationFrame'];
220
- cancelAnimationFrame = cancelAnimationFrame ||
221
- window[vendors[lastTime] + 'CancelAnimationFrame'] ||
222
- window[vendors[lastTime] + 'CancelRequestAnimationFrame'];
223
- }
224
-
225
- function raf() {
226
- if (animating) {
227
- requestAnimationFrame(raf);
228
-
229
- if (jqueryFxAvailable) {
230
- jQuery.fx.tick();
231
- }
232
- }
233
- }
234
-
235
- if (requestAnimationFrame) {
236
- // use rAF
237
- window.requestAnimationFrame = requestAnimationFrame;
238
- window.cancelAnimationFrame = cancelAnimationFrame;
239
-
240
- if (jqueryFxAvailable) {
241
- jQuery.fx.timer = function (timer) {
242
- if (timer() && jQuery.timers.push(timer) && !animating) {
243
- animating = true;
244
- raf();
245
- }
246
- };
247
-
248
- jQuery.fx.stop = function () {
249
- animating = false;
250
- };
251
- }
252
- } else {
253
- // polyfill
254
- window.requestAnimationFrame = function (callback) {
255
- var currTime = new Date().getTime(),
256
- timeToCall = Math.max(0, 16 - (currTime - lastTime)),
257
- id = window.setTimeout(function () {
258
- callback(currTime + timeToCall);
259
- }, timeToCall);
260
- lastTime = currTime + timeToCall;
261
- return id;
262
- };
263
-
264
- window.cancelAnimationFrame = function (id) {
265
- clearTimeout(id);
266
- };
267
-
268
- }
269
-
270
- }(jQuery));
271
-
272
-
273
- function removeQuotes(string) {
274
- if (typeof string === 'string' || string instanceof String) {
275
- string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
276
- }
277
-
278
- return string;
279
- }
280
-
281
- window.Foundation = {
282
- name: 'Foundation',
283
-
284
- version: '5.5.0',
285
-
286
- media_queries: {
287
- 'small': S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
288
- 'small-only': S('.foundation-mq-small-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
289
- 'medium': S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
290
- 'medium-only': S('.foundation-mq-medium-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
291
- 'large': S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
292
- 'large-only': S('.foundation-mq-large-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
293
- 'xlarge': S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
294
- 'xlarge-only': S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
295
- 'xxlarge': S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '')
296
- },
297
-
298
- stylesheet: $('<style></style>').appendTo('head')[0].sheet,
299
-
300
- global: {
301
- namespace: undefined
302
- },
303
-
304
- init: function (scope, libraries, method, options, response) {
305
- var args = [scope, method, options, response],
306
- responses = [];
307
-
308
- // check RTL
309
- this.rtl = /rtl/i.test(S('html').attr('dir'));
310
-
311
- // set foundation global scope
312
- this.scope = scope || this.scope;
313
-
314
- this.set_namespace();
315
-
316
- if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
317
- if (this.libs.hasOwnProperty(libraries)) {
318
- responses.push(this.init_lib(libraries, args));
319
- }
320
- } else {
321
- for (var lib in this.libs) {
322
- responses.push(this.init_lib(lib, libraries));
323
- }
324
- }
325
-
326
- S(window).load(function () {
327
- S(window)
328
- .trigger('resize.fndtn.clearing')
329
- .trigger('resize.fndtn.dropdown')
330
- .trigger('resize.fndtn.equalizer')
331
- .trigger('resize.fndtn.interchange')
332
- .trigger('resize.fndtn.joyride')
333
- .trigger('resize.fndtn.magellan')
334
- .trigger('resize.fndtn.topbar')
335
- .trigger('resize.fndtn.slider');
336
- });
337
-
338
- return scope;
339
- },
340
-
341
- init_lib: function (lib, args) {
342
- if (this.libs.hasOwnProperty(lib)) {
343
- this.patch(this.libs[lib]);
344
-
345
- if (args && args.hasOwnProperty(lib)) {
346
- if (typeof this.libs[lib].settings !== 'undefined') {
347
- $.extend(true, this.libs[lib].settings, args[lib]);
348
- }
349
- else if (typeof this.libs[lib].defaults !== 'undefined') {
350
- $.extend(true, this.libs[lib].defaults, args[lib]);
351
- }
352
- return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
353
- }
354
-
355
- args = args instanceof Array ? args : new Array(args);
356
- return this.libs[lib].init.apply(this.libs[lib], args);
357
- }
358
-
359
- return function () {
360
- };
361
- },
362
-
363
- patch: function (lib) {
364
- lib.scope = this.scope;
365
- lib.namespace = this.global.namespace;
366
- lib.rtl = this.rtl;
367
- lib['data_options'] = this.utils.data_options;
368
- lib['attr_name'] = attr_name;
369
- lib['add_namespace'] = add_namespace;
370
- lib['bindings'] = bindings;
371
- lib['S'] = this.utils.S;
372
- },
373
-
374
- inherit: function (scope, methods) {
375
- var methods_arr = methods.split(' '),
376
- i = methods_arr.length;
377
-
378
- while (i--) {
379
- if (this.utils.hasOwnProperty(methods_arr[i])) {
380
- scope[methods_arr[i]] = this.utils[methods_arr[i]];
381
- }
382
- }
383
- },
384
-
385
- set_namespace: function () {
386
-
387
- // Description:
388
- // Don't bother reading the namespace out of the meta tag
389
- // if the namespace has been set globally in javascript
390
- //
391
- // Example:
392
- // Foundation.global.namespace = 'my-namespace';
393
- // or make it an empty string:
394
- // Foundation.global.namespace = '';
395
- //
396
- //
397
-
398
- // If the namespace has not been set (is undefined), try to read it out of the meta element.
399
- // Otherwise use the globally defined namespace, even if it's empty ('')
400
- var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
401
-
402
- // Finally, if the namsepace is either undefined or false, set it to an empty string.
403
- // Otherwise use the namespace value.
404
- this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
405
- },
406
-
407
- libs: {},
408
-
409
- // methods that can be inherited in libraries
410
- utils: {
411
-
412
- // Description:
413
- // Fast Selector wrapper returns jQuery object. Only use where getElementById
414
- // is not available.
415
- //
416
- // Arguments:
417
- // Selector (String): CSS selector describing the element(s) to be
418
- // returned as a jQuery object.
419
- //
420
- // Scope (String): CSS selector describing the area to be searched. Default
421
- // is document.
422
- //
423
- // Returns:
424
- // Element (jQuery Object): jQuery object containing elements matching the
425
- // selector within the scope.
426
- S: S,
427
-
428
- // Description:
429
- // Executes a function a max of once every n milliseconds
430
- //
431
- // Arguments:
432
- // Func (Function): Function to be throttled.
433
- //
434
- // Delay (Integer): Function execution threshold in milliseconds.
435
- //
436
- // Returns:
437
- // Lazy_function (Function): Function with throttling applied.
438
- throttle: function (func, delay) {
439
- var timer = null;
440
-
441
- return function () {
442
- var context = this, args = arguments;
443
-
444
- if (timer == null) {
445
- timer = setTimeout(function () {
446
- func.apply(context, args);
447
- timer = null;
448
- }, delay);
449
- }
450
- };
451
- },
452
-
453
- // Description:
454
- // Executes a function when it stops being invoked for n seconds
455
- // Modified version of _.debounce() http://underscorejs.org
456
- //
457
- // Arguments:
458
- // Func (Function): Function to be debounced.
459
- //
460
- // Delay (Integer): Function execution threshold in milliseconds.
461
- //
462
- // Immediate (Bool): Whether the function should be called at the beginning
463
- // of the delay instead of the end. Default is false.
464
- //
465
- // Returns:
466
- // Lazy_function (Function): Function with debouncing applied.
467
- debounce: function (func, delay, immediate) {
468
- var timeout, result;
469
- return function () {
470
- var context = this, args = arguments;
471
- var later = function () {
472
- timeout = null;
473
- if (!immediate) result = func.apply(context, args);
474
- };
475
- var callNow = immediate && !timeout;
476
- clearTimeout(timeout);
477
- timeout = setTimeout(later, delay);
478
- if (callNow) result = func.apply(context, args);
479
- return result;
480
- };
481
- },
482
-
483
- // Description:
484
- // Parses data-options attribute
485
- //
486
- // Arguments:
487
- // El (jQuery Object): Element to be parsed.
488
- //
489
- // Returns:
490
- // Options (Javascript Object): Contents of the element's data-options
491
- // attribute.
492
- data_options: function (el, data_attr_name) {
493
- data_attr_name = data_attr_name || 'options';
494
- var opts = {}, ii, p, opts_arr,
495
- data_options = function (el) {
496
- var namespace = Foundation.global.namespace;
497
-
498
- if (namespace.length > 0) {
499
- return el.data(namespace + '-' + data_attr_name);
500
- }
501
-
502
- return el.data(data_attr_name);
503
- };
504
-
505
- var cached_options = data_options(el);
506
-
507
- if (typeof cached_options === 'object') {
508
- return cached_options;
509
- }
510
-
511
- opts_arr = (cached_options || ':').split(';');
512
- ii = opts_arr.length;
513
-
514
- function isNumber(o) {
515
- return !isNaN(o - 0) && o !== null && o !== '' && o !== false && o !== true;
516
- }
517
-
518
- function trim(str) {
519
- if (typeof str === 'string') return $.trim(str);
520
- return str;
521
- }
522
-
523
- while (ii--) {
524
- p = opts_arr[ii].split(':');
525
- p = [p[0], p.slice(1).join(':')];
526
-
527
- if (/true/i.test(p[1])) p[1] = true;
528
- if (/false/i.test(p[1])) p[1] = false;
529
- if (isNumber(p[1])) {
530
- if (p[1].indexOf('.') === -1) {
531
- p[1] = parseInt(p[1], 10);
532
- } else {
533
- p[1] = parseFloat(p[1]);
534
- }
535
- }
536
-
537
- if (p.length === 2 && p[0].length > 0) {
538
- opts[trim(p[0])] = trim(p[1]);
539
- }
540
- }
541
-
542
- return opts;
543
- },
544
-
545
- // Description:
546
- // Adds JS-recognizable media queries
547
- //
548
- // Arguments:
549
- // Media (String): Key string for the media query to be stored as in
550
- // Foundation.media_queries
551
- //
552
- // Class (String): Class name for the generated <meta> tag
553
- register_media: function (media, media_class) {
554
- if (Foundation.media_queries[media] === undefined) {
555
- $('head').append('<meta class="' + media_class + '"/>');
556
- Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
557
- }
558
- },
559
-
560
- // Description:
561
- // Add custom CSS within a JS-defined media query
562
- //
563
- // Arguments:
564
- // Rule (String): CSS rule to be appended to the document.
565
- //
566
- // Media (String): Optional media query string for the CSS rule to be
567
- // nested under.
568
- add_custom_rule: function (rule, media) {
569
- if (media === undefined && Foundation.stylesheet) {
570
- Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
571
- } else {
572
- var query = Foundation.media_queries[media];
573
-
574
- if (query !== undefined) {
575
- Foundation.stylesheet.insertRule('@media ' +
576
- Foundation.media_queries[media] + '{ ' + rule + ' }');
577
- }
578
- }
579
- },
580
-
581
- // Description:
582
- // Performs a callback function when an image is fully loaded
583
- //
584
- // Arguments:
585
- // Image (jQuery Object): Image(s) to check if loaded.
586
- //
587
- // Callback (Function): Function to execute when image is fully loaded.
588
- image_loaded: function (images, callback) {
589
- var self = this,
590
- unloaded = images.length;
591
-
592
- if (unloaded === 0) {
593
- callback(images);
594
- }
595
-
596
- images.each(function () {
597
- single_image_loaded(self.S(this), function () {
598
- unloaded -= 1;
599
- if (unloaded === 0) {
600
- callback(images);
601
- }
602
- });
603
- });
604
- },
605
-
606
- // Description:
607
- // Returns a random, alphanumeric string
608
- //
609
- // Arguments:
610
- // Length (Integer): Length of string to be generated. Defaults to random
611
- // integer.
612
- //
613
- // Returns:
614
- // Rand (String): Pseudo-random, alphanumeric string.
615
- random_str: function () {
616
- if (!this.fidx) this.fidx = 0;
617
- this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
618
-
619
- return this.prefix + (this.fidx++).toString(36);
620
- },
621
-
622
- // Description:
623
- // Helper for window.matchMedia
624
- //
625
- // Arguments:
626
- // mq (String): Media query
627
- //
628
- // Returns:
629
- // (Boolean): Whether the media query passes or not
630
- match: function (mq) {
631
- return window.matchMedia(mq).matches;
632
- },
633
-
634
- // Description:
635
- // Helpers for checking Foundation default media queries with JS
636
- //
637
- // Returns:
638
- // (Boolean): Whether the media query passes or not
639
-
640
- is_small_up: function () {
641
- return this.match(Foundation.media_queries.small);
642
- },
643
-
644
- is_medium_up: function () {
645
- return this.match(Foundation.media_queries.medium);
646
- },
647
-
648
- is_large_up: function () {
649
- return this.match(Foundation.media_queries.large);
650
- },
651
-
652
- is_xlarge_up: function () {
653
- return this.match(Foundation.media_queries.xlarge);
654
- },
655
-
656
- is_xxlarge_up: function () {
657
- return this.match(Foundation.media_queries.xxlarge);
658
- },
659
-
660
- is_small_only: function () {
661
- return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
662
- },
663
-
664
- is_medium_only: function () {
665
- return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
666
- },
667
-
668
- is_large_only: function () {
669
- return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
670
- },
671
-
672
- is_xlarge_only: function () {
673
- return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();
674
- },
675
-
676
- is_xxlarge_only: function () {
677
- return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();
678
- }
679
- }
680
- };
681
-
682
- $.fn.foundation = function () {
683
- var args = Array.prototype.slice.call(arguments, 0);
684
-
685
- return this.each(function () {
686
- Foundation.init.apply(Foundation, [this].concat(args));
687
- return this;
688
- });
689
- };
690
-
691
- }(jQuery, window, window.document));
1
+ /*
2
+ * Foundation Responsive Library
3
+ * http://foundation.zurb.com
4
+ * Copyright 2014, ZURB
5
+ * Free to use under the MIT license.
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ */
8
+
9
+ (function ($, window, document, undefined) {
10
+ 'use strict';
11
+
12
+ var header_helpers = function (class_array) {
13
+ var i = class_array.length;
14
+ var head = $('head');
15
+
16
+ while (i--) {
17
+ if (head.has('.' + class_array[i]).length === 0) {
18
+ head.append('<meta class="' + class_array[i] + '" />');
19
+ }
20
+ }
21
+ };
22
+
23
+ header_helpers([
24
+ 'foundation-mq-small',
25
+ 'foundation-mq-small-only',
26
+ 'foundation-mq-medium',
27
+ 'foundation-mq-medium-only',
28
+ 'foundation-mq-large',
29
+ 'foundation-mq-large-only',
30
+ 'foundation-mq-xlarge',
31
+ 'foundation-mq-xlarge-only',
32
+ 'foundation-mq-xxlarge',
33
+ 'foundation-data-attribute-namespace']);
34
+
35
+ // Enable FastClick if present
36
+
37
+ $(function () {
38
+ if (typeof FastClick !== 'undefined') {
39
+ // Don't attach to body if undefined
40
+ if (typeof document.body !== 'undefined') {
41
+ FastClick.attach(document.body);
42
+ }
43
+ }
44
+ });
45
+
46
+ // private Fast Selector wrapper,
47
+ // returns jQuery object. Only use where
48
+ // getElementById is not available.
49
+ var S = function (selector, context) {
50
+ if (typeof selector === 'string') {
51
+ if (context) {
52
+ var cont;
53
+ if (context.jquery) {
54
+ cont = context[0];
55
+ if (!cont) return context;
56
+ } else {
57
+ cont = context;
58
+ }
59
+ return $(cont.querySelectorAll(selector));
60
+ }
61
+
62
+ return $(document.querySelectorAll(selector));
63
+ }
64
+
65
+ return $(selector, context);
66
+ };
67
+
68
+ // Namespace functions.
69
+
70
+ var attr_name = function (init) {
71
+ var arr = [];
72
+ if (!init) arr.push('data');
73
+ if (this.namespace.length > 0) arr.push(this.namespace);
74
+ arr.push(this.name);
75
+
76
+ return arr.join('-');
77
+ };
78
+
79
+ var add_namespace = function (str) {
80
+ var parts = str.split('-'),
81
+ i = parts.length,
82
+ arr = [];
83
+
84
+ while (i--) {
85
+ if (i !== 0) {
86
+ arr.push(parts[i]);
87
+ } else {
88
+ if (this.namespace.length > 0) {
89
+ arr.push(this.namespace, parts[i]);
90
+ } else {
91
+ arr.push(parts[i]);
92
+ }
93
+ }
94
+ }
95
+
96
+ return arr.reverse().join('-');
97
+ };
98
+
99
+ // Event binding and data-options updating.
100
+
101
+ var bindings = function (method, options) {
102
+ var self = this,
103
+ should_bind_events = !S(this).data(this.attr_name(true));
104
+
105
+ if (S(this.scope).is('[' + this.attr_name() + ']')) {
106
+ S(this.scope).data(this.attr_name(true) + '-init', $.extend({}, this.settings, (options || method), this.data_options(S(this.scope))));
107
+
108
+ if (should_bind_events) {
109
+ this.events(this.scope);
110
+ }
111
+
112
+ } else {
113
+ S('[' + this.attr_name() + ']', this.scope).each(function () {
114
+ var should_bind_events = !S(this).data(self.attr_name(true) + '-init');
115
+ S(this).data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options(S(this))));
116
+
117
+ if (should_bind_events) {
118
+ self.events(this);
119
+ }
120
+ });
121
+ }
122
+ // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating.
123
+ if (typeof method === 'string') {
124
+ return this[method].call(this, options);
125
+ }
126
+
127
+ };
128
+
129
+ var single_image_loaded = function (image, callback) {
130
+ function loaded() {
131
+ callback(image[0]);
132
+ }
133
+
134
+ function bindLoad() {
135
+ this.one('load', loaded);
136
+
137
+ if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
138
+ var src = this.attr('src'),
139
+ param = src.match(/\?/) ? '&' : '?';
140
+
141
+ param += 'random=' + (new Date()).getTime();
142
+ this.attr('src', src + param);
143
+ }
144
+ }
145
+
146
+ if (!image.attr('src')) {
147
+ loaded();
148
+ return;
149
+ }
150
+
151
+ if (image[0].complete || image[0].readyState === 4) {
152
+ loaded();
153
+ } else {
154
+ bindLoad.call(image);
155
+ }
156
+ };
157
+
158
+ /*
159
+ https://github.com/paulirish/matchMedia.js
160
+ */
161
+
162
+ window.matchMedia = window.matchMedia || (function (doc) {
163
+
164
+ 'use strict';
165
+
166
+ var bool,
167
+ docElem = doc.documentElement,
168
+ refNode = docElem.firstElementChild || docElem.firstChild,
169
+ // fakeBody required for <FF4 when executed in <head>
170
+ fakeBody = doc.createElement('body'),
171
+ div = doc.createElement('div');
172
+
173
+ div.id = 'mq-test-1';
174
+ div.style.cssText = 'position:absolute;top:-100em';
175
+ fakeBody.style.background = 'none';
176
+ fakeBody.appendChild(div);
177
+
178
+ return function (q) {
179
+
180
+ div.innerHTML = '&shy;<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>';
181
+
182
+ docElem.insertBefore(fakeBody, refNode);
183
+ bool = div.offsetWidth === 42;
184
+ docElem.removeChild(fakeBody);
185
+
186
+ return {
187
+ matches: bool,
188
+ media: q
189
+ };
190
+
191
+ };
192
+
193
+ }(document));
194
+
195
+ /*
196
+ * jquery.requestAnimationFrame
197
+ * https://github.com/gnarf37/jquery-requestAnimationFrame
198
+ * Requires jQuery 1.8+
199
+ *
200
+ * Copyright (c) 2012 Corey Frang
201
+ * Licensed under the MIT license.
202
+ */
203
+
204
+ (function ($) {
205
+
206
+ // requestAnimationFrame polyfill adapted from Erik Möller
207
+ // fixes from Paul Irish and Tino Zijdel
208
+ // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
209
+ // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
210
+
211
+ var animating,
212
+ lastTime = 0,
213
+ vendors = ['webkit', 'moz'],
214
+ requestAnimationFrame = window.requestAnimationFrame,
215
+ cancelAnimationFrame = window.cancelAnimationFrame,
216
+ jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;
217
+
218
+ for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {
219
+ requestAnimationFrame = window[vendors[lastTime] + 'RequestAnimationFrame'];
220
+ cancelAnimationFrame = cancelAnimationFrame ||
221
+ window[vendors[lastTime] + 'CancelAnimationFrame'] ||
222
+ window[vendors[lastTime] + 'CancelRequestAnimationFrame'];
223
+ }
224
+
225
+ function raf() {
226
+ if (animating) {
227
+ requestAnimationFrame(raf);
228
+
229
+ if (jqueryFxAvailable) {
230
+ jQuery.fx.tick();
231
+ }
232
+ }
233
+ }
234
+
235
+ if (requestAnimationFrame) {
236
+ // use rAF
237
+ window.requestAnimationFrame = requestAnimationFrame;
238
+ window.cancelAnimationFrame = cancelAnimationFrame;
239
+
240
+ if (jqueryFxAvailable) {
241
+ jQuery.fx.timer = function (timer) {
242
+ if (timer() && jQuery.timers.push(timer) && !animating) {
243
+ animating = true;
244
+ raf();
245
+ }
246
+ };
247
+
248
+ jQuery.fx.stop = function () {
249
+ animating = false;
250
+ };
251
+ }
252
+ } else {
253
+ // polyfill
254
+ window.requestAnimationFrame = function (callback) {
255
+ var currTime = new Date().getTime(),
256
+ timeToCall = Math.max(0, 16 - (currTime - lastTime)),
257
+ id = window.setTimeout(function () {
258
+ callback(currTime + timeToCall);
259
+ }, timeToCall);
260
+ lastTime = currTime + timeToCall;
261
+ return id;
262
+ };
263
+
264
+ window.cancelAnimationFrame = function (id) {
265
+ clearTimeout(id);
266
+ };
267
+
268
+ }
269
+
270
+ }(jQuery));
271
+
272
+
273
+ function removeQuotes(string) {
274
+ if (typeof string === 'string' || string instanceof String) {
275
+ string = string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g, '');
276
+ }
277
+
278
+ return string;
279
+ }
280
+
281
+ window.Foundation = {
282
+ name: 'Foundation',
283
+
284
+ version: '5.5.0',
285
+
286
+ media_queries: {
287
+ 'small': S('.foundation-mq-small').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
288
+ 'small-only': S('.foundation-mq-small-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
289
+ 'medium': S('.foundation-mq-medium').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
290
+ 'medium-only': S('.foundation-mq-medium-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
291
+ 'large': S('.foundation-mq-large').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
292
+ 'large-only': S('.foundation-mq-large-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
293
+ 'xlarge': S('.foundation-mq-xlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
294
+ 'xlarge-only': S('.foundation-mq-xlarge-only').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, ''),
295
+ 'xxlarge': S('.foundation-mq-xxlarge').css('font-family').replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g, '')
296
+ },
297
+
298
+ stylesheet: $('<style></style>').appendTo('head')[0].sheet,
299
+
300
+ global: {
301
+ namespace: undefined
302
+ },
303
+
304
+ init: function (scope, libraries, method, options, response) {
305
+ var args = [scope, method, options, response],
306
+ responses = [];
307
+
308
+ // check RTL
309
+ this.rtl = /rtl/i.test(S('html').attr('dir'));
310
+
311
+ // set foundation global scope
312
+ this.scope = scope || this.scope;
313
+
314
+ this.set_namespace();
315
+
316
+ if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {
317
+ if (this.libs.hasOwnProperty(libraries)) {
318
+ responses.push(this.init_lib(libraries, args));
319
+ }
320
+ } else {
321
+ for (var lib in this.libs) {
322
+ responses.push(this.init_lib(lib, libraries));
323
+ }
324
+ }
325
+
326
+ S(window).load(function () {
327
+ S(window)
328
+ .trigger('resize.fndtn.clearing')
329
+ .trigger('resize.fndtn.dropdown')
330
+ .trigger('resize.fndtn.equalizer')
331
+ .trigger('resize.fndtn.interchange')
332
+ .trigger('resize.fndtn.joyride')
333
+ .trigger('resize.fndtn.magellan')
334
+ .trigger('resize.fndtn.topbar')
335
+ .trigger('resize.fndtn.slider');
336
+ });
337
+
338
+ return scope;
339
+ },
340
+
341
+ init_lib: function (lib, args) {
342
+ if (this.libs.hasOwnProperty(lib)) {
343
+ this.patch(this.libs[lib]);
344
+
345
+ if (args && args.hasOwnProperty(lib)) {
346
+ if (typeof this.libs[lib].settings !== 'undefined') {
347
+ $.extend(true, this.libs[lib].settings, args[lib]);
348
+ }
349
+ else if (typeof this.libs[lib].defaults !== 'undefined') {
350
+ $.extend(true, this.libs[lib].defaults, args[lib]);
351
+ }
352
+ return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);
353
+ }
354
+
355
+ args = args instanceof Array ? args : new Array(args);
356
+ return this.libs[lib].init.apply(this.libs[lib], args);
357
+ }
358
+
359
+ return function () {
360
+ };
361
+ },
362
+
363
+ patch: function (lib) {
364
+ lib.scope = this.scope;
365
+ lib.namespace = this.global.namespace;
366
+ lib.rtl = this.rtl;
367
+ lib['data_options'] = this.utils.data_options;
368
+ lib['attr_name'] = attr_name;
369
+ lib['add_namespace'] = add_namespace;
370
+ lib['bindings'] = bindings;
371
+ lib['S'] = this.utils.S;
372
+ },
373
+
374
+ inherit: function (scope, methods) {
375
+ var methods_arr = methods.split(' '),
376
+ i = methods_arr.length;
377
+
378
+ while (i--) {
379
+ if (this.utils.hasOwnProperty(methods_arr[i])) {
380
+ scope[methods_arr[i]] = this.utils[methods_arr[i]];
381
+ }
382
+ }
383
+ },
384
+
385
+ set_namespace: function () {
386
+
387
+ // Description:
388
+ // Don't bother reading the namespace out of the meta tag
389
+ // if the namespace has been set globally in javascript
390
+ //
391
+ // Example:
392
+ // Foundation.global.namespace = 'my-namespace';
393
+ // or make it an empty string:
394
+ // Foundation.global.namespace = '';
395
+ //
396
+ //
397
+
398
+ // If the namespace has not been set (is undefined), try to read it out of the meta element.
399
+ // Otherwise use the globally defined namespace, even if it's empty ('')
400
+ var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;
401
+
402
+ // Finally, if the namsepace is either undefined or false, set it to an empty string.
403
+ // Otherwise use the namespace value.
404
+ this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;
405
+ },
406
+
407
+ libs: {},
408
+
409
+ // methods that can be inherited in libraries
410
+ utils: {
411
+
412
+ // Description:
413
+ // Fast Selector wrapper returns jQuery object. Only use where getElementById
414
+ // is not available.
415
+ //
416
+ // Arguments:
417
+ // Selector (String): CSS selector describing the element(s) to be
418
+ // returned as a jQuery object.
419
+ //
420
+ // Scope (String): CSS selector describing the area to be searched. Default
421
+ // is document.
422
+ //
423
+ // Returns:
424
+ // Element (jQuery Object): jQuery object containing elements matching the
425
+ // selector within the scope.
426
+ S: S,
427
+
428
+ // Description:
429
+ // Executes a function a max of once every n milliseconds
430
+ //
431
+ // Arguments:
432
+ // Func (Function): Function to be throttled.
433
+ //
434
+ // Delay (Integer): Function execution threshold in milliseconds.
435
+ //
436
+ // Returns:
437
+ // Lazy_function (Function): Function with throttling applied.
438
+ throttle: function (func, delay) {
439
+ var timer = null;
440
+
441
+ return function () {
442
+ var context = this, args = arguments;
443
+
444
+ if (timer == null) {
445
+ timer = setTimeout(function () {
446
+ func.apply(context, args);
447
+ timer = null;
448
+ }, delay);
449
+ }
450
+ };
451
+ },
452
+
453
+ // Description:
454
+ // Executes a function when it stops being invoked for n seconds
455
+ // Modified version of _.debounce() http://underscorejs.org
456
+ //
457
+ // Arguments:
458
+ // Func (Function): Function to be debounced.
459
+ //
460
+ // Delay (Integer): Function execution threshold in milliseconds.
461
+ //
462
+ // Immediate (Bool): Whether the function should be called at the beginning
463
+ // of the delay instead of the end. Default is false.
464
+ //
465
+ // Returns:
466
+ // Lazy_function (Function): Function with debouncing applied.
467
+ debounce: function (func, delay, immediate) {
468
+ var timeout, result;
469
+ return function () {
470
+ var context = this, args = arguments;
471
+ var later = function () {
472
+ timeout = null;
473
+ if (!immediate) result = func.apply(context, args);
474
+ };
475
+ var callNow = immediate && !timeout;
476
+ clearTimeout(timeout);
477
+ timeout = setTimeout(later, delay);
478
+ if (callNow) result = func.apply(context, args);
479
+ return result;
480
+ };
481
+ },
482
+
483
+ // Description:
484
+ // Parses data-options attribute
485
+ //
486
+ // Arguments:
487
+ // El (jQuery Object): Element to be parsed.
488
+ //
489
+ // Returns:
490
+ // Options (Javascript Object): Contents of the element's data-options
491
+ // attribute.
492
+ data_options: function (el, data_attr_name) {
493
+ data_attr_name = data_attr_name || 'options';
494
+ var opts = {}, ii, p, opts_arr,
495
+ data_options = function (el) {
496
+ var namespace = Foundation.global.namespace;
497
+
498
+ if (namespace.length > 0) {
499
+ return el.data(namespace + '-' + data_attr_name);
500
+ }
501
+
502
+ return el.data(data_attr_name);
503
+ };
504
+
505
+ var cached_options = data_options(el);
506
+
507
+ if (typeof cached_options === 'object') {
508
+ return cached_options;
509
+ }
510
+
511
+ opts_arr = (cached_options || ':').split(';');
512
+ ii = opts_arr.length;
513
+
514
+ function isNumber(o) {
515
+ return !isNaN(o - 0) && o !== null && o !== '' && o !== false && o !== true;
516
+ }
517
+
518
+ function trim(str) {
519
+ if (typeof str === 'string') return $.trim(str);
520
+ return str;
521
+ }
522
+
523
+ while (ii--) {
524
+ p = opts_arr[ii].split(':');
525
+ p = [p[0], p.slice(1).join(':')];
526
+
527
+ if (/true/i.test(p[1])) p[1] = true;
528
+ if (/false/i.test(p[1])) p[1] = false;
529
+ if (isNumber(p[1])) {
530
+ if (p[1].indexOf('.') === -1) {
531
+ p[1] = parseInt(p[1], 10);
532
+ } else {
533
+ p[1] = parseFloat(p[1]);
534
+ }
535
+ }
536
+
537
+ if (p.length === 2 && p[0].length > 0) {
538
+ opts[trim(p[0])] = trim(p[1]);
539
+ }
540
+ }
541
+
542
+ return opts;
543
+ },
544
+
545
+ // Description:
546
+ // Adds JS-recognizable media queries
547
+ //
548
+ // Arguments:
549
+ // Media (String): Key string for the media query to be stored as in
550
+ // Foundation.media_queries
551
+ //
552
+ // Class (String): Class name for the generated <meta> tag
553
+ register_media: function (media, media_class) {
554
+ if (Foundation.media_queries[media] === undefined) {
555
+ $('head').append('<meta class="' + media_class + '"/>');
556
+ Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));
557
+ }
558
+ },
559
+
560
+ // Description:
561
+ // Add custom CSS within a JS-defined media query
562
+ //
563
+ // Arguments:
564
+ // Rule (String): CSS rule to be appended to the document.
565
+ //
566
+ // Media (String): Optional media query string for the CSS rule to be
567
+ // nested under.
568
+ add_custom_rule: function (rule, media) {
569
+ if (media === undefined && Foundation.stylesheet) {
570
+ Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);
571
+ } else {
572
+ var query = Foundation.media_queries[media];
573
+
574
+ if (query !== undefined) {
575
+ Foundation.stylesheet.insertRule('@media ' +
576
+ Foundation.media_queries[media] + '{ ' + rule + ' }');
577
+ }
578
+ }
579
+ },
580
+
581
+ // Description:
582
+ // Performs a callback function when an image is fully loaded
583
+ //
584
+ // Arguments:
585
+ // Image (jQuery Object): Image(s) to check if loaded.
586
+ //
587
+ // Callback (Function): Function to execute when image is fully loaded.
588
+ image_loaded: function (images, callback) {
589
+ var self = this,
590
+ unloaded = images.length;
591
+
592
+ if (unloaded === 0) {
593
+ callback(images);
594
+ }
595
+
596
+ images.each(function () {
597
+ single_image_loaded(self.S(this), function () {
598
+ unloaded -= 1;
599
+ if (unloaded === 0) {
600
+ callback(images);
601
+ }
602
+ });
603
+ });
604
+ },
605
+
606
+ // Description:
607
+ // Returns a random, alphanumeric string
608
+ //
609
+ // Arguments:
610
+ // Length (Integer): Length of string to be generated. Defaults to random
611
+ // integer.
612
+ //
613
+ // Returns:
614
+ // Rand (String): Pseudo-random, alphanumeric string.
615
+ random_str: function () {
616
+ if (!this.fidx) this.fidx = 0;
617
+ this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');
618
+
619
+ return this.prefix + (this.fidx++).toString(36);
620
+ },
621
+
622
+ // Description:
623
+ // Helper for window.matchMedia
624
+ //
625
+ // Arguments:
626
+ // mq (String): Media query
627
+ //
628
+ // Returns:
629
+ // (Boolean): Whether the media query passes or not
630
+ match: function (mq) {
631
+ return window.matchMedia(mq).matches;
632
+ },
633
+
634
+ // Description:
635
+ // Helpers for checking Foundation default media queries with JS
636
+ //
637
+ // Returns:
638
+ // (Boolean): Whether the media query passes or not
639
+
640
+ is_small_up: function () {
641
+ return this.match(Foundation.media_queries.small);
642
+ },
643
+
644
+ is_medium_up: function () {
645
+ return this.match(Foundation.media_queries.medium);
646
+ },
647
+
648
+ is_large_up: function () {
649
+ return this.match(Foundation.media_queries.large);
650
+ },
651
+
652
+ is_xlarge_up: function () {
653
+ return this.match(Foundation.media_queries.xlarge);
654
+ },
655
+
656
+ is_xxlarge_up: function () {
657
+ return this.match(Foundation.media_queries.xxlarge);
658
+ },
659
+
660
+ is_small_only: function () {
661
+ return !this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
662
+ },
663
+
664
+ is_medium_only: function () {
665
+ return this.is_medium_up() && !this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
666
+ },
667
+
668
+ is_large_only: function () {
669
+ return this.is_medium_up() && this.is_large_up() && !this.is_xlarge_up() && !this.is_xxlarge_up();
670
+ },
671
+
672
+ is_xlarge_only: function () {
673
+ return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && !this.is_xxlarge_up();
674
+ },
675
+
676
+ is_xxlarge_only: function () {
677
+ return this.is_medium_up() && this.is_large_up() && this.is_xlarge_up() && this.is_xxlarge_up();
678
+ }
679
+ }
680
+ };
681
+
682
+ $.fn.foundation = function () {
683
+ var args = Array.prototype.slice.call(arguments, 0);
684
+
685
+ return this.each(function () {
686
+ Foundation.init.apply(Foundation, [this].concat(args));
687
+ return this;
688
+ });
689
+ };
690
+
691
+ }(jQuery, window, window.document));