+
+ R.easing_formulas = {
+ linear: function( time, beg, diff, dur ) {
+ return beg + diff * time;
+ },
+ "<": function (time, beg, diff, dur) {
+ return diff * (time /= dur) * time + beg;
+ },
+ ">": function (time, beg, diff, dur) {
+ return -diff * (time /= dur) * (time - 2) + beg;
+ },
+ "<>": function (time, beg, diff, dur) {
+ if ((time /= dur/2) < 1) {
+ return diff / 2 * time * time + beg;
+ }
+ return -diff / 2 * ((--time) * (time - 2) - 1) + beg;
+ },
+ bounce: function (time, beg, diff, dur) {
+ if ((time /= dur) < (1 / 2.75)) {
+ return diff * (7.5625 * time * time) + beg;
+ } else if (time < (2 / 2.75)) {
+ return diff * (7.5625 * (time -= (1.5 / 2.75)) * time + .75) + beg;
+ } else if (time < (2.5 / 2.75)) {
+ return diff * (7.5625 * (time -= (2.25 / 2.75)) * time + .9375) + beg;
+ } else {
+ return diff * (7.5625 * (time -= (2.625 / 2.75)) * time + .984375) + beg;
+ }
+ }
+ };
+
+ // animation easing formulas
+ R.easing = function(easing, time, beg, diff, dur) {
+ return (R.easing_formulas[easing] || R.easing_formulas.linear)(time, beg, diff, dur);
+ };
+
+ Element.prototype.animate = function (params, ms, easing, callback) {