code: function(ratio) {
  					if (ratio > 1) {
  						ratio = 1;
  					} else if (ratio < 0) {
  						ratio = 0;
  					}
  					if (this._runBackwards) {
  						ratio = 1 - ratio;
  					}
  					var l = this._text.length,
  						i = (ratio * l + 0.5) | 0,
  						applyNew, applyOld, str;
  					if (this._hasClass) {
  						applyNew = (this._newClass && i !== 0);
  						applyOld = (this._oldClass && i !== l);
  						str = (applyNew ? "<span class='" + this._newClass + "'>" : "") + this._text.slice(0, i).join(this._delimiter) + (applyNew ? "</span>" : "") + (applyOld ? "<span class='" + this._oldClass + "'>" : "") + this._delimiter + this._original.slice(i).join(this._delimiter) + (applyOld ? "</span>" : "");
  					} else {
  						str = this._text.slice(0, i).join(this._delimiter) + this._delimiter + this._original.slice(i).join(this._delimiter);
  					}
  					this._target.innerHTML = (this._fillChar === "&nbsp;" && str.indexOf("  ") !== -1) ? str.split("  ").join("&nbsp;&nbsp;") : str;
  				}
docs: called each time the values should be updated, and the ratio gets passed as the only parameter (typically it's a value between 0 and 1, but it can exceed those when using an ease like Elastic.easeOut or Back.easeOut, etc.)