function GetStyle (obj,name) {return Obj.currentstyle?obj.currentstyle[name]:getcomputedstyle (obj,false) [name];}; function Move (obj,json,options) {options=options| | {};options.time=options.time| | 700;options.type=options.type| | ' Ease-out '; var start={};var dis={};for (var name in JSON) {if (name== ' opacity ') {start[name]=parsefloat (GetStyle (obj, name));} Else{start[name]=parseint (GetStyle (Obj,name));} Dis[name]=json[name]-start[name];}; var count=math.round (OPTIONS.TIME/30), Var n=0;clearinterval (Obj.timer), Obj.timer=setinterval (function () {n++;for ( var name in JSON) {switch (options.type) {case ' linear '://constant speed var cur=start[name]+dis[name]*n/count;break;case ' ease-in ': Accelerated var a=n/count;var cur=start[name]+dis[name]*a*a*a;break;case ' ease-out '://deceleration var a=1-n/count;var cur=start[name] +dis[name]* (1-a*a*a); break;}}; if (name== ' opacity ') {obj.style.opacity=cur;obj.style.filter= ' alpha (opacity: ' +cur*100+ ') ';} else{obj.style[name]=cur+ ' px ';}; if (n==count) {clearinterval (Obj.timer); Options.fn&&options.fn ();}})}
Variable speed Dynamic Motion