docs: function sn_api_datum_nestedStackDataNormalizeByDate(layerData, fillTemplate, fillFn) {
  	var i = 0,
  		j,
  		k,
  		jMax = layerData.length - 1,
  		dummy,
  		prop,
  		copyIndex;
  	// fill in "holes" for each stack, if more than one stack. we assume data already sorted by date
  	if ( jMax > 0 ) {
  		while ( i < d3.max(layerData.map(function(e) { return e.values.length; })) ) {
  			dummy = undefined;
  			for ( j = 0; j <= jMax; j++ ) {
  				if ( layerData[j].values.length <= i ) {
  					continue;
  				}
  				if ( j < jMax ) {
  					k = j + 1;
  				} else {
  					k = 0;
  				}
  				if ( layerData[k].values.length <= i || layerData[j].values[i].date.getTime() < layerData[k].values[i].date.getTime() ) {
  					dummy = {date : layerData[j].values[i].date, sourceId : layerData[k].key};
  					if ( fillTemplate ) {
  						for ( prop in fillTemplate ) {
  							if ( fillTemplate.hasOwnProperty(prop) ) {
  								dummy[prop] = fillTemplate[prop];
  							}
  						}
  					}
  					if ( fillFn ) {
  						copyIndex = (layerData[k].values.length > i ? i : i > 0 ? i - 1 : null);
  						fillFn(dummy, layerData[k].key, (copyIndex !== null ? layerData[k].values[copyIndex] : undefined));
  					}
  					layerData[k].values.splice(i, 0, dummy);
  				}
  			}
  			if ( dummy === undefined ) {
  				i++;
  			}
  		}
  	}
  }