-})();}
-fx.Opacity = function(a,b){
- var o = new fx(a,b,"opacity");
- o.cur = function(){return parseFloat(o.el.style.opacity);};
- o.a = function() {
- var e = o.el.style;
- if (o.now == 1) { o.now = 0.9999; }
- if (window.ActiveXObject) {
- e.filter = "alpha(opacity=" + o.now*100 + ")";
+
+ // IE has trouble with opacity if it doesn't have layout
+ if ( jQuery.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 ( (prop == "height" || prop == "width") && z.o.auto )
+ jQuery.setAuto( z.el, prop );
+
+ // If a callback was provided, execute it
+ if( z.o.complete.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";
+
+ // Execute the complete function
+ z.o.complete.apply( z.el );
+ }
+ } 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();