code: function elasticEaseInOut (p) {
      if( p < 0.5 ) {
          return 0.5 * Math.sin( 13 * ( Math.PI / 2 ) * (2 * p) ) * Math.pow( 2, 10 * ( ( 2 * p ) - 1) );
      } else {
          return 0.5 * ( Math.sin( -13 * ( Math.PI / 2 ) * ( ( 2 * p - 1 ) + 1 ) ) * Math.pow( 2, -10 * ( 2 * p - 1) ) + 2 );
      }
  }
docs: Modeled after the piecewise exponentially-damped sine wave: y = (1/2)*sin(13pi/2*(2*x))*pow(2, 10 * ((2*x) - 1))      ; [0,0.5) y = (1/2)*(sin(-13pi/2*((2x-1)+1))*pow(2,-10(2*x-1)) + 2) ; [0.5, 1]