You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ke...@apache.org on 2015/08/16 12:29:54 UTC
[11/36] isis-site git commit: ISIS-1191: Fixing some broken links in
the Contributors Guide
http://git-wip-us.apache.org/repos/asf/isis-site/blob/c751f07d/content/js/foundation/5.5.1/foundation/foundation.dropdown.js
----------------------------------------------------------------------
diff --git a/content/js/foundation/5.5.1/foundation/foundation.dropdown.js b/content/js/foundation/5.5.1/foundation/foundation.dropdown.js
index 87d5d21..4fa8b31 100644
--- a/content/js/foundation/5.5.1/foundation/foundation.dropdown.js
+++ b/content/js/foundation/5.5.1/foundation/foundation.dropdown.js
@@ -1,448 +1,448 @@
-;(function ($, window, document, undefined) {
- 'use strict';
-
- Foundation.libs.dropdown = {
- name : 'dropdown',
-
- version : '5.5.1',
-
- settings : {
- active_class : 'open',
- disabled_class : 'disabled',
- mega_class : 'mega',
- align : 'bottom',
- is_hover : false,
- hover_timeout : 150,
- opened : function () {},
- closed : function () {}
- },
-
- init : function (scope, method, options) {
- Foundation.inherit(this, 'throttle');
-
- $.extend(true, this.settings, method, options);
- this.bindings(method, options);
- },
-
- events : function (scope) {
- var self = this,
- S = self.S;
-
- S(this.scope)
- .off('.dropdown')
- .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
- var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
- if (!settings.is_hover || Modernizr.touch) {
- e.preventDefault();
- if (S(this).parent('[data-reveal-id]')) {
- e.stopPropagation();
- }
- self.toggle($(this));
- }
- })
- .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
- var $this = S(this),
- dropdown,
- target;
-
- clearTimeout(self.timeout);
-
- if ($this.data(self.data_attr())) {
- dropdown = S('#' + $this.data(self.data_attr()));
- target = $this;
- } else {
- dropdown = $this;
- target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
- }
-
- var settings = target.data(self.attr_name(true) + '-init') || self.settings;
-
- if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
- self.closeall.call(self);
- }
-
- if (settings.is_hover) {
- self.open.apply(self, [dropdown, target]);
- }
- })
- .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
- var $this = S(this);
- var settings;
-
- if ($this.data(self.data_attr())) {
- settings = $this.data(self.data_attr(true) + '-init') || self.settings;
- } else {
- var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
- settings = target.data(self.attr_name(true) + '-init') || self.settings;
- }
-
- self.timeout = setTimeout(function () {
- if ($this.data(self.data_attr())) {
- if (settings.is_hover) {
- self.close.call(self, S('#' + $this.data(self.data_attr())));
- }
- } else {
- if (settings.is_hover) {
- self.close.call(self, $this);
- }
- }
- }.bind(this), settings.hover_timeout);
- })
- .on('click.fndtn.dropdown', function (e) {
- var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
- var links = parent.find('a');
-
- if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
- self.close.call(self, S('[' + self.attr_name() + '-content]'));
- }
-
- if (e.target !== document && !$.contains(document.documentElement, e.target)) {
- return;
- }
-
- if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
- return;
- }
-
- if (!(S(e.target).data('revealId')) &&
- (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
- $.contains(parent.first()[0], e.target)))) {
- e.stopPropagation();
- return;
- }
-
- self.close.call(self, S('[' + self.attr_name() + '-content]'));
- })
- .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
- self.settings.opened.call(this);
- })
- .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
- self.settings.closed.call(this);
- });
-
- S(window)
- .off('.dropdown')
- .on('resize.fndtn.dropdown', self.throttle(function () {
- self.resize.call(self);
- }, 50));
-
- this.resize();
- },
-
- close : function (dropdown) {
- var self = this;
- dropdown.each(function () {
- var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id + ']');
- original_target.attr('aria-expanded', 'false');
- if (self.S(this).hasClass(self.settings.active_class)) {
- self.S(this)
- .css(Foundation.rtl ? 'right' : 'left', '-99999px')
- .attr('aria-hidden', 'true')
- .removeClass(self.settings.active_class)
- .prev('[' + self.attr_name() + ']')
- .removeClass(self.settings.active_class)
- .removeData('target');
-
- self.S(this).trigger('closed').trigger('closed.fndtn.dropdown', [dropdown]);
- }
- });
- dropdown.removeClass('f-open-' + this.attr_name(true));
- },
-
- closeall : function () {
- var self = this;
- $.each(self.S('.f-open-' + this.attr_name(true)), function () {
- self.close.call(self, self.S(this));
- });
- },
-
- open : function (dropdown, target) {
- this
- .css(dropdown
- .addClass(this.settings.active_class), target);
- dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
- dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]);
- dropdown.attr('aria-hidden', 'false');
- target.attr('aria-expanded', 'true');
- dropdown.focus();
- dropdown.addClass('f-open-' + this.attr_name(true));
- },
-
- data_attr : function () {
- if (this.namespace.length > 0) {
- return this.namespace + '-' + this.name;
- }
-
- return this.name;
- },
-
- toggle : function (target) {
- if (target.hasClass(this.settings.disabled_class)) {
- return;
- }
- var dropdown = this.S('#' + target.data(this.data_attr()));
- if (dropdown.length === 0) {
- // No dropdown found, not continuing
- return;
- }
-
- this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
-
- if (dropdown.hasClass(this.settings.active_class)) {
- this.close.call(this, dropdown);
- if (dropdown.data('target') !== target.get(0)) {
- this.open.call(this, dropdown, target);
- }
- } else {
- this.open.call(this, dropdown, target);
- }
- },
-
- resize : function () {
- var dropdown = this.S('[' + this.attr_name() + '-content].open');
- var target = $(dropdown.data("target"));
-
- if (dropdown.length && target.length) {
- this.css(dropdown, target);
- }
- },
-
- css : function (dropdown, target) {
- var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
- settings = target.data(this.attr_name(true) + '-init') || this.settings;
-
- this.clear_idx();
-
- if (this.small()) {
- var p = this.dirs.bottom.call(dropdown, target, settings);
-
- dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
- position : 'absolute',
- width : '95%',
- 'max-width' : 'none',
- top : p.top
- });
-
- dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
- } else {
-
- this.style(dropdown, target, settings);
- }
-
- return dropdown;
- },
-
- style : function (dropdown, target, settings) {
- var css = $.extend({position : 'absolute'},
- this.dirs[settings.align].call(dropdown, target, settings));
-
- dropdown.attr('style', '').css(css);
- },
-
- // return CSS property object
- // `this` is the dropdown
- dirs : {
- // Calculate target offset
- _base : function (t) {
- var o_p = this.offsetParent(),
- o = o_p.offset(),
- p = t.offset();
-
- p.top -= o.top;
- p.left -= o.left;
-
- //set some flags on the p object to pass along
- p.missRight = false;
- p.missTop = false;
- p.missLeft = false;
- p.leftRightFlag = false;
-
- //lets see if the panel will be off the screen
- //get the actual width of the page and store it
- var actualBodyWidth;
- if (document.getElementsByClassName('row')[0]) {
- actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
- } else {
- actualBodyWidth = window.outerWidth;
- }
-
- var actualMarginWidth = (window.outerWidth - actualBodyWidth) / 2;
- var actualBoundary = actualBodyWidth;
-
- if (!this.hasClass('mega')) {
- //miss top
- if (t.offset().top <= this.outerHeight()) {
- p.missTop = true;
- actualBoundary = window.outerWidth - actualMarginWidth;
- p.leftRightFlag = true;
- }
-
- //miss right
- if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) {
- p.missRight = true;
- p.missLeft = false;
- }
-
- //miss left
- if (t.offset().left - this.outerWidth() <= 0) {
- p.missLeft = true;
- p.missRight = false;
- }
- }
-
- return p;
- },
-
- top : function (t, s) {
- var self = Foundation.libs.dropdown,
- p = self.dirs._base.call(this, t);
-
- this.addClass('drop-top');
-
- if (p.missTop == true) {
- p.top = p.top + t.outerHeight() + this.outerHeight();
- this.removeClass('drop-top');
- }
-
- if (p.missRight == true) {
- p.left = p.left - this.outerWidth() + t.outerWidth();
- }
-
- if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
- self.adjust_pip(this, t, s, p);
- }
-
- if (Foundation.rtl) {
- return {left : p.left - this.outerWidth() + t.outerWidth(),
- top : p.top - this.outerHeight()};
- }
-
- return {left : p.left, top : p.top - this.outerHeight()};
- },
-
- bottom : function (t, s) {
- var self = Foundation.libs.dropdown,
- p = self.dirs._base.call(this, t);
-
- if (p.missRight == true) {
- p.left = p.left - this.outerWidth() + t.outerWidth();
- }
-
- if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
- self.adjust_pip(this, t, s, p);
- }
-
- if (self.rtl) {
- return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
- }
-
- return {left : p.left, top : p.top + t.outerHeight()};
- },
-
- left : function (t, s) {
- var p = Foundation.libs.dropdown.dirs._base.call(this, t);
-
- this.addClass('drop-left');
-
- if (p.missLeft == true) {
- p.left = p.left + this.outerWidth();
- p.top = p.top + t.outerHeight();
- this.removeClass('drop-left');
- }
-
- return {left : p.left - this.outerWidth(), top : p.top};
- },
-
- right : function (t, s) {
- var p = Foundation.libs.dropdown.dirs._base.call(this, t);
-
- this.addClass('drop-right');
-
- if (p.missRight == true) {
- p.left = p.left - this.outerWidth();
- p.top = p.top + t.outerHeight();
- this.removeClass('drop-right');
- } else {
- p.triggeredRight = true;
- }
-
- var self = Foundation.libs.dropdown;
-
- if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
- self.adjust_pip(this, t, s, p);
- }
-
- return {left : p.left + t.outerWidth(), top : p.top};
- }
- },
-
- // Insert rule to style psuedo elements
- adjust_pip : function (dropdown, target, settings, position) {
- var sheet = Foundation.stylesheet,
- pip_offset_base = 8;
-
- if (dropdown.hasClass(settings.mega_class)) {
- pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
- } else if (this.small()) {
- pip_offset_base += position.left - 8;
- }
-
- this.rule_idx = sheet.cssRules.length;
-
- //default
- var sel_before = '.f-dropdown.open:before',
- sel_after = '.f-dropdown.open:after',
- css_before = 'left: ' + pip_offset_base + 'px;',
- css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
-
- if (position.missRight == true) {
- pip_offset_base = dropdown.outerWidth() - 23;
- sel_before = '.f-dropdown.open:before',
- sel_after = '.f-dropdown.open:after',
- css_before = 'left: ' + pip_offset_base + 'px;',
- css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
- }
-
- //just a case where right is fired, but its not missing right
- if (position.triggeredRight == true) {
- sel_before = '.f-dropdown.open:before',
- sel_after = '.f-dropdown.open:after',
- css_before = 'left:-12px;',
- css_after = 'left:-14px;';
- }
-
- if (sheet.insertRule) {
- sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
- sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
- } else {
- sheet.addRule(sel_before, css_before, this.rule_idx);
- sheet.addRule(sel_after, css_after, this.rule_idx + 1);
- }
- },
-
- // Remove old dropdown rule index
- clear_idx : function () {
- var sheet = Foundation.stylesheet;
-
- if (typeof this.rule_idx !== 'undefined') {
- sheet.deleteRule(this.rule_idx);
- sheet.deleteRule(this.rule_idx);
- delete this.rule_idx;
- }
- },
-
- small : function () {
- return matchMedia(Foundation.media_queries.small).matches &&
- !matchMedia(Foundation.media_queries.medium).matches;
- },
-
- off : function () {
- this.S(this.scope).off('.fndtn.dropdown');
- this.S('html, body').off('.fndtn.dropdown');
- this.S(window).off('.fndtn.dropdown');
- this.S('[data-dropdown-content]').off('.fndtn.dropdown');
- },
-
- reflow : function () {}
- };
-}(jQuery, window, window.document));
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.dropdown = {
+ name : 'dropdown',
+
+ version : '5.5.1',
+
+ settings : {
+ active_class : 'open',
+ disabled_class : 'disabled',
+ mega_class : 'mega',
+ align : 'bottom',
+ is_hover : false,
+ hover_timeout : 150,
+ opened : function () {},
+ closed : function () {}
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle');
+
+ $.extend(true, this.settings, method, options);
+ this.bindings(method, options);
+ },
+
+ events : function (scope) {
+ var self = this,
+ S = self.S;
+
+ S(this.scope)
+ .off('.dropdown')
+ .on('click.fndtn.dropdown', '[' + this.attr_name() + ']', function (e) {
+ var settings = S(this).data(self.attr_name(true) + '-init') || self.settings;
+ if (!settings.is_hover || Modernizr.touch) {
+ e.preventDefault();
+ if (S(this).parent('[data-reveal-id]')) {
+ e.stopPropagation();
+ }
+ self.toggle($(this));
+ }
+ })
+ .on('mouseenter.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+ var $this = S(this),
+ dropdown,
+ target;
+
+ clearTimeout(self.timeout);
+
+ if ($this.data(self.data_attr())) {
+ dropdown = S('#' + $this.data(self.data_attr()));
+ target = $this;
+ } else {
+ dropdown = $this;
+ target = S('[' + self.attr_name() + '="' + dropdown.attr('id') + '"]');
+ }
+
+ var settings = target.data(self.attr_name(true) + '-init') || self.settings;
+
+ if (S(e.currentTarget).data(self.data_attr()) && settings.is_hover) {
+ self.closeall.call(self);
+ }
+
+ if (settings.is_hover) {
+ self.open.apply(self, [dropdown, target]);
+ }
+ })
+ .on('mouseleave.fndtn.dropdown', '[' + this.attr_name() + '], [' + this.attr_name() + '-content]', function (e) {
+ var $this = S(this);
+ var settings;
+
+ if ($this.data(self.data_attr())) {
+ settings = $this.data(self.data_attr(true) + '-init') || self.settings;
+ } else {
+ var target = S('[' + self.attr_name() + '="' + S(this).attr('id') + '"]'),
+ settings = target.data(self.attr_name(true) + '-init') || self.settings;
+ }
+
+ self.timeout = setTimeout(function () {
+ if ($this.data(self.data_attr())) {
+ if (settings.is_hover) {
+ self.close.call(self, S('#' + $this.data(self.data_attr())));
+ }
+ } else {
+ if (settings.is_hover) {
+ self.close.call(self, $this);
+ }
+ }
+ }.bind(this), settings.hover_timeout);
+ })
+ .on('click.fndtn.dropdown', function (e) {
+ var parent = S(e.target).closest('[' + self.attr_name() + '-content]');
+ var links = parent.find('a');
+
+ if (links.length > 0 && parent.attr('aria-autoclose') !== 'false') {
+ self.close.call(self, S('[' + self.attr_name() + '-content]'));
+ }
+
+ if (e.target !== document && !$.contains(document.documentElement, e.target)) {
+ return;
+ }
+
+ if (S(e.target).closest('[' + self.attr_name() + ']').length > 0) {
+ return;
+ }
+
+ if (!(S(e.target).data('revealId')) &&
+ (parent.length > 0 && (S(e.target).is('[' + self.attr_name() + '-content]') ||
+ $.contains(parent.first()[0], e.target)))) {
+ e.stopPropagation();
+ return;
+ }
+
+ self.close.call(self, S('[' + self.attr_name() + '-content]'));
+ })
+ .on('opened.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+ self.settings.opened.call(this);
+ })
+ .on('closed.fndtn.dropdown', '[' + self.attr_name() + '-content]', function () {
+ self.settings.closed.call(this);
+ });
+
+ S(window)
+ .off('.dropdown')
+ .on('resize.fndtn.dropdown', self.throttle(function () {
+ self.resize.call(self);
+ }, 50));
+
+ this.resize();
+ },
+
+ close : function (dropdown) {
+ var self = this;
+ dropdown.each(function () {
+ var original_target = $('[' + self.attr_name() + '=' + dropdown[0].id + ']') || $('aria-controls=' + dropdown[0].id + ']');
+ original_target.attr('aria-expanded', 'false');
+ if (self.S(this).hasClass(self.settings.active_class)) {
+ self.S(this)
+ .css(Foundation.rtl ? 'right' : 'left', '-99999px')
+ .attr('aria-hidden', 'true')
+ .removeClass(self.settings.active_class)
+ .prev('[' + self.attr_name() + ']')
+ .removeClass(self.settings.active_class)
+ .removeData('target');
+
+ self.S(this).trigger('closed').trigger('closed.fndtn.dropdown', [dropdown]);
+ }
+ });
+ dropdown.removeClass('f-open-' + this.attr_name(true));
+ },
+
+ closeall : function () {
+ var self = this;
+ $.each(self.S('.f-open-' + this.attr_name(true)), function () {
+ self.close.call(self, self.S(this));
+ });
+ },
+
+ open : function (dropdown, target) {
+ this
+ .css(dropdown
+ .addClass(this.settings.active_class), target);
+ dropdown.prev('[' + this.attr_name() + ']').addClass(this.settings.active_class);
+ dropdown.data('target', target.get(0)).trigger('opened').trigger('opened.fndtn.dropdown', [dropdown, target]);
+ dropdown.attr('aria-hidden', 'false');
+ target.attr('aria-expanded', 'true');
+ dropdown.focus();
+ dropdown.addClass('f-open-' + this.attr_name(true));
+ },
+
+ data_attr : function () {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + this.name;
+ }
+
+ return this.name;
+ },
+
+ toggle : function (target) {
+ if (target.hasClass(this.settings.disabled_class)) {
+ return;
+ }
+ var dropdown = this.S('#' + target.data(this.data_attr()));
+ if (dropdown.length === 0) {
+ // No dropdown found, not continuing
+ return;
+ }
+
+ this.close.call(this, this.S('[' + this.attr_name() + '-content]').not(dropdown));
+
+ if (dropdown.hasClass(this.settings.active_class)) {
+ this.close.call(this, dropdown);
+ if (dropdown.data('target') !== target.get(0)) {
+ this.open.call(this, dropdown, target);
+ }
+ } else {
+ this.open.call(this, dropdown, target);
+ }
+ },
+
+ resize : function () {
+ var dropdown = this.S('[' + this.attr_name() + '-content].open');
+ var target = $(dropdown.data("target"));
+
+ if (dropdown.length && target.length) {
+ this.css(dropdown, target);
+ }
+ },
+
+ css : function (dropdown, target) {
+ var left_offset = Math.max((target.width() - dropdown.width()) / 2, 8),
+ settings = target.data(this.attr_name(true) + '-init') || this.settings;
+
+ this.clear_idx();
+
+ if (this.small()) {
+ var p = this.dirs.bottom.call(dropdown, target, settings);
+
+ dropdown.attr('style', '').removeClass('drop-left drop-right drop-top').css({
+ position : 'absolute',
+ width : '95%',
+ 'max-width' : 'none',
+ top : p.top
+ });
+
+ dropdown.css(Foundation.rtl ? 'right' : 'left', left_offset);
+ } else {
+
+ this.style(dropdown, target, settings);
+ }
+
+ return dropdown;
+ },
+
+ style : function (dropdown, target, settings) {
+ var css = $.extend({position : 'absolute'},
+ this.dirs[settings.align].call(dropdown, target, settings));
+
+ dropdown.attr('style', '').css(css);
+ },
+
+ // return CSS property object
+ // `this` is the dropdown
+ dirs : {
+ // Calculate target offset
+ _base : function (t) {
+ var o_p = this.offsetParent(),
+ o = o_p.offset(),
+ p = t.offset();
+
+ p.top -= o.top;
+ p.left -= o.left;
+
+ //set some flags on the p object to pass along
+ p.missRight = false;
+ p.missTop = false;
+ p.missLeft = false;
+ p.leftRightFlag = false;
+
+ //lets see if the panel will be off the screen
+ //get the actual width of the page and store it
+ var actualBodyWidth;
+ if (document.getElementsByClassName('row')[0]) {
+ actualBodyWidth = document.getElementsByClassName('row')[0].clientWidth;
+ } else {
+ actualBodyWidth = window.outerWidth;
+ }
+
+ var actualMarginWidth = (window.outerWidth - actualBodyWidth) / 2;
+ var actualBoundary = actualBodyWidth;
+
+ if (!this.hasClass('mega')) {
+ //miss top
+ if (t.offset().top <= this.outerHeight()) {
+ p.missTop = true;
+ actualBoundary = window.outerWidth - actualMarginWidth;
+ p.leftRightFlag = true;
+ }
+
+ //miss right
+ if (t.offset().left + this.outerWidth() > t.offset().left + actualMarginWidth && t.offset().left - actualMarginWidth > this.outerWidth()) {
+ p.missRight = true;
+ p.missLeft = false;
+ }
+
+ //miss left
+ if (t.offset().left - this.outerWidth() <= 0) {
+ p.missLeft = true;
+ p.missRight = false;
+ }
+ }
+
+ return p;
+ },
+
+ top : function (t, s) {
+ var self = Foundation.libs.dropdown,
+ p = self.dirs._base.call(this, t);
+
+ this.addClass('drop-top');
+
+ if (p.missTop == true) {
+ p.top = p.top + t.outerHeight() + this.outerHeight();
+ this.removeClass('drop-top');
+ }
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth() + t.outerWidth();
+ }
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ if (Foundation.rtl) {
+ return {left : p.left - this.outerWidth() + t.outerWidth(),
+ top : p.top - this.outerHeight()};
+ }
+
+ return {left : p.left, top : p.top - this.outerHeight()};
+ },
+
+ bottom : function (t, s) {
+ var self = Foundation.libs.dropdown,
+ p = self.dirs._base.call(this, t);
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth() + t.outerWidth();
+ }
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ if (self.rtl) {
+ return {left : p.left - this.outerWidth() + t.outerWidth(), top : p.top + t.outerHeight()};
+ }
+
+ return {left : p.left, top : p.top + t.outerHeight()};
+ },
+
+ left : function (t, s) {
+ var p = Foundation.libs.dropdown.dirs._base.call(this, t);
+
+ this.addClass('drop-left');
+
+ if (p.missLeft == true) {
+ p.left = p.left + this.outerWidth();
+ p.top = p.top + t.outerHeight();
+ this.removeClass('drop-left');
+ }
+
+ return {left : p.left - this.outerWidth(), top : p.top};
+ },
+
+ right : function (t, s) {
+ var p = Foundation.libs.dropdown.dirs._base.call(this, t);
+
+ this.addClass('drop-right');
+
+ if (p.missRight == true) {
+ p.left = p.left - this.outerWidth();
+ p.top = p.top + t.outerHeight();
+ this.removeClass('drop-right');
+ } else {
+ p.triggeredRight = true;
+ }
+
+ var self = Foundation.libs.dropdown;
+
+ if (t.outerWidth() < this.outerWidth() || self.small() || this.hasClass(s.mega_menu)) {
+ self.adjust_pip(this, t, s, p);
+ }
+
+ return {left : p.left + t.outerWidth(), top : p.top};
+ }
+ },
+
+ // Insert rule to style psuedo elements
+ adjust_pip : function (dropdown, target, settings, position) {
+ var sheet = Foundation.stylesheet,
+ pip_offset_base = 8;
+
+ if (dropdown.hasClass(settings.mega_class)) {
+ pip_offset_base = position.left + (target.outerWidth() / 2) - 8;
+ } else if (this.small()) {
+ pip_offset_base += position.left - 8;
+ }
+
+ this.rule_idx = sheet.cssRules.length;
+
+ //default
+ var sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left: ' + pip_offset_base + 'px;',
+ css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
+
+ if (position.missRight == true) {
+ pip_offset_base = dropdown.outerWidth() - 23;
+ sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left: ' + pip_offset_base + 'px;',
+ css_after = 'left: ' + (pip_offset_base - 1) + 'px;';
+ }
+
+ //just a case where right is fired, but its not missing right
+ if (position.triggeredRight == true) {
+ sel_before = '.f-dropdown.open:before',
+ sel_after = '.f-dropdown.open:after',
+ css_before = 'left:-12px;',
+ css_after = 'left:-14px;';
+ }
+
+ if (sheet.insertRule) {
+ sheet.insertRule([sel_before, '{', css_before, '}'].join(' '), this.rule_idx);
+ sheet.insertRule([sel_after, '{', css_after, '}'].join(' '), this.rule_idx + 1);
+ } else {
+ sheet.addRule(sel_before, css_before, this.rule_idx);
+ sheet.addRule(sel_after, css_after, this.rule_idx + 1);
+ }
+ },
+
+ // Remove old dropdown rule index
+ clear_idx : function () {
+ var sheet = Foundation.stylesheet;
+
+ if (typeof this.rule_idx !== 'undefined') {
+ sheet.deleteRule(this.rule_idx);
+ sheet.deleteRule(this.rule_idx);
+ delete this.rule_idx;
+ }
+ },
+
+ small : function () {
+ return matchMedia(Foundation.media_queries.small).matches &&
+ !matchMedia(Foundation.media_queries.medium).matches;
+ },
+
+ off : function () {
+ this.S(this.scope).off('.fndtn.dropdown');
+ this.S('html, body').off('.fndtn.dropdown');
+ this.S(window).off('.fndtn.dropdown');
+ this.S('[data-dropdown-content]').off('.fndtn.dropdown');
+ },
+
+ reflow : function () {}
+ };
+}(jQuery, window, window.document));
http://git-wip-us.apache.org/repos/asf/isis-site/blob/c751f07d/content/js/foundation/5.5.1/foundation/foundation.equalizer.js
----------------------------------------------------------------------
diff --git a/content/js/foundation/5.5.1/foundation/foundation.equalizer.js b/content/js/foundation/5.5.1/foundation/foundation.equalizer.js
index fbb54ba..dd912a7 100644
--- a/content/js/foundation/5.5.1/foundation/foundation.equalizer.js
+++ b/content/js/foundation/5.5.1/foundation/foundation.equalizer.js
@@ -1,77 +1,77 @@
-;(function ($, window, document, undefined) {
- 'use strict';
-
- Foundation.libs.equalizer = {
- name : 'equalizer',
-
- version : '5.5.1',
-
- settings : {
- use_tallest : true,
- before_height_change : $.noop,
- after_height_change : $.noop,
- equalize_on_stack : false
- },
-
- init : function (scope, method, options) {
- Foundation.inherit(this, 'image_loaded');
- this.bindings(method, options);
- this.reflow();
- },
-
- events : function () {
- this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
- this.reflow();
- }.bind(this));
- },
-
- equalize : function (equalizer) {
- var isStacked = false,
- vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),
- settings = equalizer.data(this.attr_name(true) + '-init');
-
- if (vals.length === 0) {
- return;
- }
- var firstTopOffset = vals.first().offset().top;
- settings.before_height_change();
- equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer');
- vals.height('inherit');
- vals.each(function () {
- var el = $(this);
- if (el.offset().top !== firstTopOffset) {
- isStacked = true;
- }
- });
-
- if (settings.equalize_on_stack === false) {
- if (isStacked) {
- return;
- }
- };
-
- var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
-
- if (settings.use_tallest) {
- var max = Math.max.apply(null, heights);
- vals.css('height', max);
- } else {
- var min = Math.min.apply(null, heights);
- vals.css('height', min);
- }
- settings.after_height_change();
- equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer');
- },
-
- reflow : function () {
- var self = this;
-
- this.S('[' + this.attr_name() + ']', this.scope).each(function () {
- var $eq_target = $(this);
- self.image_loaded(self.S('img', this), function () {
- self.equalize($eq_target)
- });
- });
- }
- };
-})(jQuery, window, window.document);
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.equalizer = {
+ name : 'equalizer',
+
+ version : '5.5.1',
+
+ settings : {
+ use_tallest : true,
+ before_height_change : $.noop,
+ after_height_change : $.noop,
+ equalize_on_stack : false
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'image_loaded');
+ this.bindings(method, options);
+ this.reflow();
+ },
+
+ events : function () {
+ this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) {
+ this.reflow();
+ }.bind(this));
+ },
+
+ equalize : function (equalizer) {
+ var isStacked = false,
+ vals = equalizer.find('[' + this.attr_name() + '-watch]:visible'),
+ settings = equalizer.data(this.attr_name(true) + '-init');
+
+ if (vals.length === 0) {
+ return;
+ }
+ var firstTopOffset = vals.first().offset().top;
+ settings.before_height_change();
+ equalizer.trigger('before-height-change').trigger('before-height-change.fndth.equalizer');
+ vals.height('inherit');
+ vals.each(function () {
+ var el = $(this);
+ if (el.offset().top !== firstTopOffset) {
+ isStacked = true;
+ }
+ });
+
+ if (settings.equalize_on_stack === false) {
+ if (isStacked) {
+ return;
+ }
+ };
+
+ var heights = vals.map(function () { return $(this).outerHeight(false) }).get();
+
+ if (settings.use_tallest) {
+ var max = Math.max.apply(null, heights);
+ vals.css('height', max);
+ } else {
+ var min = Math.min.apply(null, heights);
+ vals.css('height', min);
+ }
+ settings.after_height_change();
+ equalizer.trigger('after-height-change').trigger('after-height-change.fndtn.equalizer');
+ },
+
+ reflow : function () {
+ var self = this;
+
+ this.S('[' + this.attr_name() + ']', this.scope).each(function () {
+ var $eq_target = $(this);
+ self.image_loaded(self.S('img', this), function () {
+ self.equalize($eq_target)
+ });
+ });
+ }
+ };
+})(jQuery, window, window.document);
http://git-wip-us.apache.org/repos/asf/isis-site/blob/c751f07d/content/js/foundation/5.5.1/foundation/foundation.interchange.js
----------------------------------------------------------------------
diff --git a/content/js/foundation/5.5.1/foundation/foundation.interchange.js b/content/js/foundation/5.5.1/foundation/foundation.interchange.js
index 20a0b81..9162a4c 100644
--- a/content/js/foundation/5.5.1/foundation/foundation.interchange.js
+++ b/content/js/foundation/5.5.1/foundation/foundation.interchange.js
@@ -1,354 +1,354 @@
-;(function ($, window, document, undefined) {
- 'use strict';
-
- Foundation.libs.interchange = {
- name : 'interchange',
-
- version : '5.5.1',
-
- cache : {},
-
- images_loaded : false,
- nodes_loaded : false,
-
- settings : {
- load_attr : 'interchange',
-
- named_queries : {
- 'default' : 'only screen',
- 'small' : Foundation.media_queries['small'],
- 'small-only' : Foundation.media_queries['small-only'],
- 'medium' : Foundation.media_queries['medium'],
- 'medium-only' : Foundation.media_queries['medium-only'],
- 'large' : Foundation.media_queries['large'],
- 'large-only' : Foundation.media_queries['large-only'],
- 'xlarge' : Foundation.media_queries['xlarge'],
- 'xlarge-only' : Foundation.media_queries['xlarge-only'],
- 'xxlarge' : Foundation.media_queries['xxlarge'],
- 'landscape' : 'only screen and (orientation: landscape)',
- 'portrait' : 'only screen and (orientation: portrait)',
- 'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
- 'only screen and (min--moz-device-pixel-ratio: 2),' +
- 'only screen and (-o-min-device-pixel-ratio: 2/1),' +
- 'only screen and (min-device-pixel-ratio: 2),' +
- 'only screen and (min-resolution: 192dpi),' +
- 'only screen and (min-resolution: 2dppx)'
- },
-
- directives : {
- replace : function (el, path, trigger) {
- // The trigger argument, if called within the directive, fires
- // an event named after the directive on the element, passing
- // any parameters along to the event that you pass to trigger.
- //
- // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
- //
- // This allows you to bind a callback like so:
- // $('#interchangeContainer').on('replace', function (e, a, b, c) {
- // console.log($(this).html(), a, b, c);
- // });
-
- if (/IMG/.test(el[0].nodeName)) {
- var orig_path = el[0].src;
-
- if (new RegExp(path, 'i').test(orig_path)) {
- return;
- }
-
- el[0].src = path;
-
- return trigger(el[0].src);
- }
- var last_path = el.data(this.data_attr + '-last-path'),
- self = this;
-
- if (last_path == path) {
- return;
- }
-
- if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
- $(el).css('background-image', 'url(' + path + ')');
- el.data('interchange-last-path', path);
- return trigger(path);
- }
-
- return $.get(path, function (response) {
- el.html(response);
- el.data(self.data_attr + '-last-path', path);
- trigger();
- });
-
- }
- }
- },
-
- init : function (scope, method, options) {
- Foundation.inherit(this, 'throttle random_str');
-
- this.data_attr = this.set_data_attr();
- $.extend(true, this.settings, method, options);
- this.bindings(method, options);
- this.load('images');
- this.load('nodes');
- },
-
- get_media_hash : function () {
- var mediaHash = '';
- for (var queryName in this.settings.named_queries ) {
- mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
- }
- return mediaHash;
- },
-
- events : function () {
- var self = this, prevMediaHash;
-
- $(window)
- .off('.interchange')
- .on('resize.fndtn.interchange', self.throttle(function () {
- var currMediaHash = self.get_media_hash();
- if (currMediaHash !== prevMediaHash) {
- self.resize();
- }
- prevMediaHash = currMediaHash;
- }, 50));
-
- return this;
- },
-
- resize : function () {
- var cache = this.cache;
-
- if (!this.images_loaded || !this.nodes_loaded) {
- setTimeout($.proxy(this.resize, this), 50);
- return;
- }
-
- for (var uuid in cache) {
- if (cache.hasOwnProperty(uuid)) {
- var passed = this.results(uuid, cache[uuid]);
-
- if (passed) {
- this.settings.directives[passed
- .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
- if (arguments[0] instanceof Array) {
- var args = arguments[0];
- } else {
- var args = Array.prototype.slice.call(arguments, 0);
- }
-
- return function() {
- passed.el.trigger(passed.scenario[1], args);
- }
- }(passed)));
- }
- }
- }
-
- },
-
- results : function (uuid, scenarios) {
- var count = scenarios.length;
-
- if (count > 0) {
- var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
-
- while (count--) {
- var mq, rule = scenarios[count][2];
- if (this.settings.named_queries.hasOwnProperty(rule)) {
- mq = matchMedia(this.settings.named_queries[rule]);
- } else {
- mq = matchMedia(rule);
- }
- if (mq.matches) {
- return {el : el, scenario : scenarios[count]};
- }
- }
- }
-
- return false;
- },
-
- load : function (type, force_update) {
- if (typeof this['cached_' + type] === 'undefined' || force_update) {
- this['update_' + type]();
- }
-
- return this['cached_' + type];
- },
-
- update_images : function () {
- var images = this.S('img[' + this.data_attr + ']'),
- count = images.length,
- i = count,
- loaded_count = 0,
- data_attr = this.data_attr;
-
- this.cache = {};
- this.cached_images = [];
- this.images_loaded = (count === 0);
-
- while (i--) {
- loaded_count++;
- if (images[i]) {
- var str = images[i].getAttribute(data_attr) || '';
-
- if (str.length > 0) {
- this.cached_images.push(images[i]);
- }
- }
-
- if (loaded_count === count) {
- this.images_loaded = true;
- this.enhance('images');
- }
- }
-
- return this;
- },
-
- update_nodes : function () {
- var nodes = this.S('[' + this.data_attr + ']').not('img'),
- count = nodes.length,
- i = count,
- loaded_count = 0,
- data_attr = this.data_attr;
-
- this.cached_nodes = [];
- this.nodes_loaded = (count === 0);
-
- while (i--) {
- loaded_count++;
- var str = nodes[i].getAttribute(data_attr) || '';
-
- if (str.length > 0) {
- this.cached_nodes.push(nodes[i]);
- }
-
- if (loaded_count === count) {
- this.nodes_loaded = true;
- this.enhance('nodes');
- }
- }
-
- return this;
- },
-
- enhance : function (type) {
- var i = this['cached_' + type].length;
-
- while (i--) {
- this.object($(this['cached_' + type][i]));
- }
-
- return $(window).trigger('resize').trigger('resize.fndtn.interchange');
- },
-
- convert_directive : function (directive) {
-
- var trimmed = this.trim(directive);
-
- if (trimmed.length > 0) {
- return trimmed;
- }
-
- return 'replace';
- },
-
- parse_scenario : function (scenario) {
- // This logic had to be made more complex since some users were using commas in the url path
- // So we cannot simply just split on a comma
- var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
- media_query = scenario[1];
-
- if (directive_match) {
- var path = directive_match[1],
- directive = directive_match[2];
- } else {
- var cached_split = scenario[0].split(/,\s*$/),
- path = cached_split[0],
- directive = '';
- }
-
- return [this.trim(path), this.convert_directive(directive), this.trim(media_query)];
- },
-
- object : function (el) {
- var raw_arr = this.parse_data_attr(el),
- scenarios = [],
- i = raw_arr.length;
-
- if (i > 0) {
- while (i--) {
- var split = raw_arr[i].split(/\(([^\)]*?)(\))$/);
-
- if (split.length > 1) {
- var params = this.parse_scenario(split);
- scenarios.push(params);
- }
- }
- }
-
- return this.store(el, scenarios);
- },
-
- store : function (el, scenarios) {
- var uuid = this.random_str(),
- current_uuid = el.data(this.add_namespace('uuid', true));
-
- if (this.cache[current_uuid]) {
- return this.cache[current_uuid];
- }
-
- el.attr(this.add_namespace('data-uuid'), uuid);
-
- return this.cache[uuid] = scenarios;
- },
-
- trim : function (str) {
-
- if (typeof str === 'string') {
- return $.trim(str);
- }
-
- return str;
- },
-
- set_data_attr : function (init) {
- if (init) {
- if (this.namespace.length > 0) {
- return this.namespace + '-' + this.settings.load_attr;
- }
-
- return this.settings.load_attr;
- }
-
- if (this.namespace.length > 0) {
- return 'data-' + this.namespace + '-' + this.settings.load_attr;
- }
-
- return 'data-' + this.settings.load_attr;
- },
-
- parse_data_attr : function (el) {
- var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
- i = raw.length,
- output = [];
-
- while (i--) {
- if (raw[i].replace(/[\W\d]+/, '').length > 4) {
- output.push(raw[i]);
- }
- }
-
- return output;
- },
-
- reflow : function () {
- this.load('images', true);
- this.load('nodes', true);
- }
-
- };
-
-}(jQuery, window, window.document));
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ Foundation.libs.interchange = {
+ name : 'interchange',
+
+ version : '5.5.1',
+
+ cache : {},
+
+ images_loaded : false,
+ nodes_loaded : false,
+
+ settings : {
+ load_attr : 'interchange',
+
+ named_queries : {
+ 'default' : 'only screen',
+ 'small' : Foundation.media_queries['small'],
+ 'small-only' : Foundation.media_queries['small-only'],
+ 'medium' : Foundation.media_queries['medium'],
+ 'medium-only' : Foundation.media_queries['medium-only'],
+ 'large' : Foundation.media_queries['large'],
+ 'large-only' : Foundation.media_queries['large-only'],
+ 'xlarge' : Foundation.media_queries['xlarge'],
+ 'xlarge-only' : Foundation.media_queries['xlarge-only'],
+ 'xxlarge' : Foundation.media_queries['xxlarge'],
+ 'landscape' : 'only screen and (orientation: landscape)',
+ 'portrait' : 'only screen and (orientation: portrait)',
+ 'retina' : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +
+ 'only screen and (min--moz-device-pixel-ratio: 2),' +
+ 'only screen and (-o-min-device-pixel-ratio: 2/1),' +
+ 'only screen and (min-device-pixel-ratio: 2),' +
+ 'only screen and (min-resolution: 192dpi),' +
+ 'only screen and (min-resolution: 2dppx)'
+ },
+
+ directives : {
+ replace : function (el, path, trigger) {
+ // The trigger argument, if called within the directive, fires
+ // an event named after the directive on the element, passing
+ // any parameters along to the event that you pass to trigger.
+ //
+ // ex. trigger(), trigger([a, b, c]), or trigger(a, b, c)
+ //
+ // This allows you to bind a callback like so:
+ // $('#interchangeContainer').on('replace', function (e, a, b, c) {
+ // console.log($(this).html(), a, b, c);
+ // });
+
+ if (/IMG/.test(el[0].nodeName)) {
+ var orig_path = el[0].src;
+
+ if (new RegExp(path, 'i').test(orig_path)) {
+ return;
+ }
+
+ el[0].src = path;
+
+ return trigger(el[0].src);
+ }
+ var last_path = el.data(this.data_attr + '-last-path'),
+ self = this;
+
+ if (last_path == path) {
+ return;
+ }
+
+ if (/\.(gif|jpg|jpeg|tiff|png)([?#].*)?/i.test(path)) {
+ $(el).css('background-image', 'url(' + path + ')');
+ el.data('interchange-last-path', path);
+ return trigger(path);
+ }
+
+ return $.get(path, function (response) {
+ el.html(response);
+ el.data(self.data_attr + '-last-path', path);
+ trigger();
+ });
+
+ }
+ }
+ },
+
+ init : function (scope, method, options) {
+ Foundation.inherit(this, 'throttle random_str');
+
+ this.data_attr = this.set_data_attr();
+ $.extend(true, this.settings, method, options);
+ this.bindings(method, options);
+ this.load('images');
+ this.load('nodes');
+ },
+
+ get_media_hash : function () {
+ var mediaHash = '';
+ for (var queryName in this.settings.named_queries ) {
+ mediaHash += matchMedia(this.settings.named_queries[queryName]).matches.toString();
+ }
+ return mediaHash;
+ },
+
+ events : function () {
+ var self = this, prevMediaHash;
+
+ $(window)
+ .off('.interchange')
+ .on('resize.fndtn.interchange', self.throttle(function () {
+ var currMediaHash = self.get_media_hash();
+ if (currMediaHash !== prevMediaHash) {
+ self.resize();
+ }
+ prevMediaHash = currMediaHash;
+ }, 50));
+
+ return this;
+ },
+
+ resize : function () {
+ var cache = this.cache;
+
+ if (!this.images_loaded || !this.nodes_loaded) {
+ setTimeout($.proxy(this.resize, this), 50);
+ return;
+ }
+
+ for (var uuid in cache) {
+ if (cache.hasOwnProperty(uuid)) {
+ var passed = this.results(uuid, cache[uuid]);
+
+ if (passed) {
+ this.settings.directives[passed
+ .scenario[1]].call(this, passed.el, passed.scenario[0], (function (passed) {
+ if (arguments[0] instanceof Array) {
+ var args = arguments[0];
+ } else {
+ var args = Array.prototype.slice.call(arguments, 0);
+ }
+
+ return function() {
+ passed.el.trigger(passed.scenario[1], args);
+ }
+ }(passed)));
+ }
+ }
+ }
+
+ },
+
+ results : function (uuid, scenarios) {
+ var count = scenarios.length;
+
+ if (count > 0) {
+ var el = this.S('[' + this.add_namespace('data-uuid') + '="' + uuid + '"]');
+
+ while (count--) {
+ var mq, rule = scenarios[count][2];
+ if (this.settings.named_queries.hasOwnProperty(rule)) {
+ mq = matchMedia(this.settings.named_queries[rule]);
+ } else {
+ mq = matchMedia(rule);
+ }
+ if (mq.matches) {
+ return {el : el, scenario : scenarios[count]};
+ }
+ }
+ }
+
+ return false;
+ },
+
+ load : function (type, force_update) {
+ if (typeof this['cached_' + type] === 'undefined' || force_update) {
+ this['update_' + type]();
+ }
+
+ return this['cached_' + type];
+ },
+
+ update_images : function () {
+ var images = this.S('img[' + this.data_attr + ']'),
+ count = images.length,
+ i = count,
+ loaded_count = 0,
+ data_attr = this.data_attr;
+
+ this.cache = {};
+ this.cached_images = [];
+ this.images_loaded = (count === 0);
+
+ while (i--) {
+ loaded_count++;
+ if (images[i]) {
+ var str = images[i].getAttribute(data_attr) || '';
+
+ if (str.length > 0) {
+ this.cached_images.push(images[i]);
+ }
+ }
+
+ if (loaded_count === count) {
+ this.images_loaded = true;
+ this.enhance('images');
+ }
+ }
+
+ return this;
+ },
+
+ update_nodes : function () {
+ var nodes = this.S('[' + this.data_attr + ']').not('img'),
+ count = nodes.length,
+ i = count,
+ loaded_count = 0,
+ data_attr = this.data_attr;
+
+ this.cached_nodes = [];
+ this.nodes_loaded = (count === 0);
+
+ while (i--) {
+ loaded_count++;
+ var str = nodes[i].getAttribute(data_attr) || '';
+
+ if (str.length > 0) {
+ this.cached_nodes.push(nodes[i]);
+ }
+
+ if (loaded_count === count) {
+ this.nodes_loaded = true;
+ this.enhance('nodes');
+ }
+ }
+
+ return this;
+ },
+
+ enhance : function (type) {
+ var i = this['cached_' + type].length;
+
+ while (i--) {
+ this.object($(this['cached_' + type][i]));
+ }
+
+ return $(window).trigger('resize').trigger('resize.fndtn.interchange');
+ },
+
+ convert_directive : function (directive) {
+
+ var trimmed = this.trim(directive);
+
+ if (trimmed.length > 0) {
+ return trimmed;
+ }
+
+ return 'replace';
+ },
+
+ parse_scenario : function (scenario) {
+ // This logic had to be made more complex since some users were using commas in the url path
+ // So we cannot simply just split on a comma
+ var directive_match = scenario[0].match(/(.+),\s*(\w+)\s*$/),
+ media_query = scenario[1];
+
+ if (directive_match) {
+ var path = directive_match[1],
+ directive = directive_match[2];
+ } else {
+ var cached_split = scenario[0].split(/,\s*$/),
+ path = cached_split[0],
+ directive = '';
+ }
+
+ return [this.trim(path), this.convert_directive(directive), this.trim(media_query)];
+ },
+
+ object : function (el) {
+ var raw_arr = this.parse_data_attr(el),
+ scenarios = [],
+ i = raw_arr.length;
+
+ if (i > 0) {
+ while (i--) {
+ var split = raw_arr[i].split(/\(([^\)]*?)(\))$/);
+
+ if (split.length > 1) {
+ var params = this.parse_scenario(split);
+ scenarios.push(params);
+ }
+ }
+ }
+
+ return this.store(el, scenarios);
+ },
+
+ store : function (el, scenarios) {
+ var uuid = this.random_str(),
+ current_uuid = el.data(this.add_namespace('uuid', true));
+
+ if (this.cache[current_uuid]) {
+ return this.cache[current_uuid];
+ }
+
+ el.attr(this.add_namespace('data-uuid'), uuid);
+
+ return this.cache[uuid] = scenarios;
+ },
+
+ trim : function (str) {
+
+ if (typeof str === 'string') {
+ return $.trim(str);
+ }
+
+ return str;
+ },
+
+ set_data_attr : function (init) {
+ if (init) {
+ if (this.namespace.length > 0) {
+ return this.namespace + '-' + this.settings.load_attr;
+ }
+
+ return this.settings.load_attr;
+ }
+
+ if (this.namespace.length > 0) {
+ return 'data-' + this.namespace + '-' + this.settings.load_attr;
+ }
+
+ return 'data-' + this.settings.load_attr;
+ },
+
+ parse_data_attr : function (el) {
+ var raw = el.attr(this.attr_name()).split(/\[(.*?)\]/),
+ i = raw.length,
+ output = [];
+
+ while (i--) {
+ if (raw[i].replace(/[\W\d]+/, '').length > 4) {
+ output.push(raw[i]);
+ }
+ }
+
+ return output;
+ },
+
+ reflow : function () {
+ this.load('images', true);
+ this.load('nodes', true);
+ }
+
+ };
+
+}(jQuery, window, window.document));