/*****************************************************************************
 *
 *  TITLE:		AbleEngine - Plugin - Equalize Heights
 *  MODIFIED:	2011.06.16
 *  AUTHOR: 	Graham Wheeler
 *	REQUIRES:	AE Core 2.1.1
 *
 ****************************************************************************/

/**
 * Finds all immediate children of target elements and sets an equal height (taking padding into account)
 * If the column wrapper or element which contains it has a minimum height set, then all columns will be 
 * made at least that tall.
 */ 
AE.Plugins.Add({
	
	name: 'EqualizeHeight',
	attachToEvents: 'WINDOW_LOAD,DOM_UPDATED,REFLOW_CONTENT',
	init: function(scope) {
		AE.select('.equal-height', scope).each( function() {
			var self = AE.select(this);
			var maxHeight = 0;
			var containerMinHeight = self.css('min-height').replace('px', '');
			if (containerMinHeight == 0 && !self.parent().hasClass('equalize-height-ignore')) {
				containerMinHeight = self.parent().css('min-height').replace('px', '');
			}
			var maxElement = null;
			var targets = AE.select(this).children();
			targets.css('min-height', '').each( function(i) {
				var el = AE.select(this);
				if ((el.height()+parseInt(el.css('padding-bottom'))+parseInt(el.css('padding-top')))>maxHeight) {
					maxHeight = el.height()+parseInt(el.css('padding-top'))+parseInt(el.css('padding-bottom'));
					maxElement = this;
				}
			});
			var setHeight = (maxHeight < containerMinHeight) ? containerMinHeight : maxHeight; 
			targets.each( function() {
				var el = AE.select(this);																												
				el.css('min-height', setHeight-parseInt(el.css('padding-top'))-parseInt(el.css('padding-bottom')));
			});
		});
	}

});
