rem: $.fx = function(el,op,ty){ 
add: $.fx = function( elem, options, prop ){ 
context: $.fx = function(el,op,ty){	var z = this;	// The users options	z.o = {		duration: (op && op.duration) || 400,		onComplete: (op && op.onComplete) || op	};	// The element	z.el = el;	// The styles	var y = z.el.style;	// Simple function for setting a style value	z.a = function(){		z.el.style[ty] = z.now+'px';	};	// Figure out the maximum number to run to	z.max = function(){return z.el["$$orig"+ty]||z.cur();};	// Get the current size	z.cur = function(){return $.css(z.el,ty);};	// Start an animation from one number to another	z.custom = function(from,to){		z.startTime = (new Date()).getTime();		z.now = from;		z.a();		z.timer = setInterval(function(){			z.step(from, to);		}, 13);	};	// Simple 'show' function	z.show = function(){		y.display = "block";		z.o.auto = true;		z.custom(0,z.max());	};	// Simple 'hide' function	z.hide = function(){		// Remember where we started, so that we can go back to it later		z.el["$$orig"+ty] = this.cur();		// Begin the animation		z.custom(z.cur(),0);	};	// Toggle between showing and hiding an element	z.toggle = function(){		if ( z.cur() > 0 ) {			z.hide();		} else {			z.show();		}	};	// 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();		}	};};
meta: 3217	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/3217/c3c706d3f24dbad0fdeb80fe9caf158bd9d6de66/fx.js/buggy/fx/fx.js