Suporte para crossbrowser RequestAnimationFrame

 (function(w) {

var lT = 0,
a
= ['ms', 'moz', 'webkit', 'o'],
i
= a.length;


while( --i > -1 && !w.requestAnimationFrame ){
w
.requestAnimationFrame = w[a[i]+'RequestAnimationFrame'];
w
.cancelAnimationFrame = w[a[i]+'CancelAnimationFrame']
|| w[a[i]+'CancelRequestAnimationFrame'];
}

if ( !w.requestAnimationFrame ){
w
.requestAnimationFrame = function(callback, element) {
var cT = new Date().getTime(),
tTC
= Math.max(0, 16 - (cT - lT)),
id
= w.setTimeout(function() { callback(cT + tTC); },tTC);
lT
= cT + tTC;
return id;
};
}

if ( !w.cancelAnimationFrame ){
w
.cancelAnimationFrame = function(id) {
clearTimeout
(id);
};
}

}(window));