/**
* Fixes the heights of all passed elements to that of the tallest one.
* V0.3 - LR
*/
$.fn.normaliseHeights = function(commonChild) {

	var heightArray = new Array();
	var selectedElements = $(this);
	
	normaliseNow();	

	function normaliseNow() {
		
		// Loop through, recording outerHeight to an array
		selectedElements.each(function(i) {
			var parentElement = $(this);									   
			parentElement.data('originalHeight',parentElement.outerHeight());									   
			heightArray[i] = parentElement.outerHeight();                  	// Height with border + padding
		});
		
		heightArray.sort(function(a,b){return b - a});          	 		// Sort array numerically and descending
		selectedElements.height(heightArray[0]);                     		// Set all elements to have largest height
		
		// Loop through again, adjusting all heights accordingly
		selectedElements.each(function(i) {
									   
			parentElement = $(this);							   

			var heightDifference = parentElement.outerHeight() - parentElement.height();
			parentElement.height(parentElement.height() - heightDifference);						
			
			if(commonChild){

				var lastChild = parentElement.find(commonChild).filter(':last');	// Last common child in parent
				
				var originalHeight = parentElement.data('originalHeight');			// Original height before updated
				var updatedHeight = parentElement.outerHeight();					// Updated height
				var lastChildModifier = updatedHeight - originalHeight;				// Modified height
				lastChild.height(lastChild.height()+lastChildModifier);				// Change the height...
			}
			
		});
		
		return selectedElements;
	}

}