-}
-fx.fn = ["show","hide","toggle"];
-fx.ty = ["Height","Width","Left","Top"];
-for(var i in fx.ty){(function(){
- var c = fx.ty[i];
- fx[c] = function(a,b){
- return new fx(a,b,c.toLowerCase(),c);};
-})()}
-fx.Opacity = function(a,b){
- var o = new fx(a,b,"opacity");
+
+ // IE has trouble with opacity if it doesn't have layout
+ if ( $.browser == "msie" && !z.el.currentStyle.hasLayout ) {
+ y.zoom = 1;
+ }
+
+ // Remember the overflow of the element
+ z.oldOverflow = y.overflow;
+
+ // Make sure that nothing sneaks out
+ y.overflow = "hidden";
+
+ // Each step of an animation
+ z.step = function(firstNum, lastNum){
+ var t = (new Date()).getTime();
+
+ if (t > z.o.duration + z.startTime) {
+ // Stop the timer
+ clearInterval(z.timer);
+ z.timer = null;
+
+ z.now = lastNum;
+ z.a();
+
+ // Reset the overflow
+ y.overflow = z.oldOverflow;
+
+ // If the element was shown, and not using a custom number,
+ // set its height and/or width to auto
+ if ( (ty == "height" || ty == "width") && z.o.auto ) {
+ $.setAuto( z.el, ty );
+ }
+
+ // If a callback was provided, execute it
+ if( z.o.onComplete.constructor == Function ) {
+
+ // Yes, this is a weird place for this, but it needs to be executed
+ // only once per cluster of effects.
+ // If the element is, effectively, hidden - hide it
+ if ( y.height == "0px" || y.width == "0px" ) {
+ y.display = "none";
+ }
+
+ $.apply( z.el, z.o.onComplete );
+ }
+ } else {
+ // Figure out where in the animation we are and set the number
+ var p = (t - this.startTime) / z.o.duration;
+ z.now = ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum;
+
+ // Perform the next step of the animation
+ z.a();
+ }
+ };
+
+};
+
+$.fx.fn = ["show","hide","toggle"];
+$.fx.ty = ["Height","Width","Left","Top"];
+
+(function(){
+ for(var $i in $.fx.ty){(function(){
+ var c = $.fx.ty[$i];
+ $.fx[c] = function(a,b){
+ return new $.fx(a,b,c.toLowerCase());
+ };
+ })();}
+})();
+
+$.fx.Opacity = function(a,b,sv){
+ var o = new $.fx(a,b,"opacity");