﻿/*-------------------------------------------------------------------- 
* JQuery Plugin: "EqualHeights"
* by:	Scott Jehl, Todd Parker, Maggie Costello Wachs (http://www.filamentgroup.com)
*
* Copyright (c) 2008 Filament Group
* Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
*
* Description: Compares the heights or widths of the top-level children of a provided element 
and sets their min-height to the tallest height (or width to widest width). Sets in em units 
by default if pxToEm() method is available.
* Dependencies: jQuery library, pxToEm method	(article: 
http://www.filamentgroup.com/lab/retaining_scalable_interfaces_with_pixel_to_em_conversion/)							  
* Usage Example: $(element).equalHeights();
Optional: to set min-height in px, pass a true argument: $(element).equalHeights(true);
* Version: 2.0, 08.01.2008
--------------------------------------------------------------------*/

$.fn.equalHeights = function (px) {
	$(this).each(function () {
		var currentTallest = 0;
		var currentPaddingTop = 0;
		var currentPaddingBottom = 0;
		var tmpThisHeight = 0;
		var tmpTotHeight = 0;
		var tmpPaddingTop = 0;
		var tmpPaddingBottom = 0;
		$(this).children().each(function (i) {
			tmpThisHeight = $(this).height();
			tmpPaddingTop = parseInt($(this).css("padding-top"));
			tmpPaddingBottom = parseInt($(this).css("padding-bottom"));
			tmpTotHeight = tmpThisHeight + tmpPaddingTop + tmpPaddingBottom;
			if (tmpThisHeight > currentTallest) { currentTallest = tmpThisHeight; }
			if (tmpPaddingTop > currentPaddingTop) { currentPaddingTop = tmpPaddingTop; }
			if (tmpPaddingBottom > currentPaddingBottom) { currentPaddingBottom = tmpPaddingBottom;  }
		});
		//if (!px || !Number.prototype.pxToEm) currentTallest = currentTallest.pxToEm(); //use ems unless px is specified
		// for ie6, set height since min-height isn't supported
		if ($.browser.msie && $.browser.version == 6.0) {
			$(this).children().css({ 'height': currentTallest,'padding-top' : currentPaddingTop,'padding-bottom' : currentPaddingBottom });
		}
		$(this).children().css({ 'min-height': currentTallest, 'padding-top': currentPaddingTop, 'padding-bottom': currentPaddingBottom });
	});
	return this;
};
