code: function calculateVerticals(segments) {
  		var rowCnt = getRowCnt();
  		var colCnt = getColCnt();
  		var rowContentHeights = []; // content height for each row
  		var segmentRows = buildSegmentRows(segments); // an array of segment arrays, one for each row
  
  		for (var rowI=0; rowI<rowCnt; rowI++) {
  			var segmentRow = segmentRows[rowI];
  
  			// an array of running total heights for each column.
  			// initialize with all zeros.
  			var colHeights = [];
  			for (var colI=0; colI<colCnt; colI++) {
  				colHeights.push(0);
  			}
  
  			// loop through every segment
  			for (var segmentI=0; segmentI<segmentRow.length; segmentI++) {
  				var segment = segmentRow[segmentI];
  
  				// find the segment's top coordinate by looking at the max height
  				// of all the columns the segment will be in.
  				segment.top = arrayMax(
  					colHeights.slice(
  						segment.leftCol,
  						segment.rightCol + 1 // make exclusive for slice
  					)
  				);
  
  				// adjust the columns to account for the segment's height
  				for (var colI=segment.leftCol; colI<=segment.rightCol; colI++) {
  					colHeights[colI] = segment.top + segment.outerHeight;
  				}
  			}
  
  			// the tallest column in the row should be the "content height"
  			rowContentHeights.push(arrayMax(colHeights));
  		}
  
  		return rowContentHeights;
  	}
docs: Calculate the "top" coordinate for each segment, relative to the "top" of the row. Also, return an array that contains the "content" height for each row (the height displaced by the vertically stacked events in the row). Requires segments to have their `outerHeight` property already set.