Ext.apply(Ext.Fx,{shake:function(f){f=Ext.applyIf(f||{},{shakes:5,excitement:2,direction:"x"});var l=this,h=l.dom,k=f.direction.toUpperCase(),p=Ext.fly(h).getStyle("position")=="absolute",m=p?Ext.fly(h)["get"+k]():0,j=(k=="X")?"left":"top",u=f.shakes,b=u*2,i=f.excitement*2,d=Ext.fly(h).getPositioning(),n={},q;q=n[j]={to:0};if(!p){l.position()}function g(){q.to=(b&1)?m-(u--*i):m+(u*i);arguments.callee.anim=Ext.fly(h).fxanim(n,f,"motion",0.1,"easeNone",function(){if(--b>0){l.queueFx({concurrent:true},g)}else{Ext.fly(h).setPositioning(d).afterFx(f)}})}l.queueFx({concurrent:true},g);return l}});Ext.Element.addMethods(Ext.Fx);