;(function ($, window, document, undefined) { 'use strict'; Foundation.libs.equalizer = { name : 'equalizer', version : '{{VERSION}}', settings : { use_tallest : true, before_height_change : $.noop, after_height_change : $.noop, equalize_on_stack : false, act_on_hidden_el: false }, init : function (scope, method, options) { Foundation.inherit(this, 'image_loaded'); this.bindings(method, options); this.reflow(); }, events : function () { this.S(window).off('.equalizer').on('resize.fndtn.equalizer', function (e) { this.reflow(); }.bind(this)); }, equalize : function (equalizer) { var isStacked = false, group = equalizer.data('equalizer'), settings = equalizer.data(this.attr_name(true)+'-init') || this.settings, vals, firstTopOffset; if (settings.act_on_hidden_el) { vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]') : equalizer.find('['+this.attr_name()+'-watch]'); } else { vals = group ? equalizer.find('['+this.attr_name()+'-watch="'+group+'"]:visible') : equalizer.find('['+this.attr_name()+'-watch]:visible'); } if (vals.length === 0) { return; } settings.before_height_change(); equalizer.trigger('before-height-change.fndth.equalizer'); vals.height('inherit'); if (settings.equalize_on_stack === false) { firstTopOffset = vals.first().offset().top; vals.each(function () { if ($(this).offset().top !== firstTopOffset) { isStacked = true; return false; } }); if (isStacked) { return; } } var heights = vals.map(function () { return $(this).outerHeight(false) }).get(); if (settings.use_tallest) { var max = Math.max.apply(null, heights); vals.css('height', max); } else { var min = Math.min.apply(null, heights); vals.css('height', min); } settings.after_height_change(); equalizer.trigger('after-height-change.fndtn.equalizer'); }, reflow : function () { var self = this; this.S('[' + this.attr_name() + ']', this.scope).each(function () { var $eq_target = $(this), media_query = $eq_target.data('equalizer-mq'), ignore_media_query = true; if (media_query) { media_query = 'is_' + media_query.replace(/-/g, '_'); if (Foundation.utils.hasOwnProperty(media_query)) { ignore_media_query = false; } } self.image_loaded(self.S('img', this), function () { if (ignore_media_query || Foundation.utils[media_query]()) { self.equalize($eq_target) } else { var vals = $eq_target.find('[' + self.attr_name() + '-watch]:visible'); vals.css('height', 'auto'); } }); }); } }; })(jQuery, window, window.document);