code: function CalculateAnimationSpecs( initialSize, endSize, speed ) {
  
  		if( initialSize === endSize ) {
  			return {
  				stepSize: 0,
  				steps: 0,
  				intervalTime: 0,
  			};
  		}
  
  		var distance = endSize - initialSize;        // the overall distance the animation needs to travel
  		var intervalTime = ( speed / distance );     // the time each setInterval iteration will take
  		var stepSize = distance < 0 ? -1 : 1;        // if distance is negative then we set stepSize to -1
  		var steps = Math.abs( distance / stepSize ); // the amount of steps required to get to endSize
  		intervalTime = speed / steps;
  
  		// we need to adjust our animation specs if interval time exceeds 60FPS eg intervalTime < 16.67ms
  		if( Math.abs( intervalTime ) < ( 1000 / 60 ) ) {
  			intervalTime = ( 1000 / 60 );                          // let’s not get lower that 60FPS
  			steps = Math.ceil( Math.abs( speed / intervalTime ) ); // we now need the steps and make sure we ceil them so -1 won't make them negative
  			stepSize = distance / steps;                           // last thing is step sizes which are derived from all of the above
  		}
  
  		return {
  			stepSize: stepSize,
  			steps: ( steps - 1 ),
  			intervalTime: intervalTime,
  		};
  	}
docs: -------------------------------------------------------------------------------------------------------------------------------------------------------------- PRIVATE FUNCTIONS -------------------------------------------------------------------------------------------------------------------------------------------------------------- 
  PRIVATE
  Calculate the requirements for the desired animation
  
  @param  {integer} initialSize - The initial size of the element to animate
  @param  {integer} endSize     - The size the element after the animation completes
  @param  {string}  speed       - The speed of the animation in ms
  
  @return {object}              - Required steps, stepSize and intervalTime for the animation