function(gotoEnd){
		var t = now();

		if ( gotoEnd || t >= this.options.duration + this.startTime ) {
			this.now = this.end;
			this.pos = this.state = 1;
			this.update();

			this.options.curAnim[ this.prop ] = true;

			var done = true;
			for ( var i in this.options.curAnim )
				if ( this.options.curAnim[i] !== true )
					done = false;

			if ( done ) {
				if ( this.options.display != null ) {
					// Reset the overflow
					this.elem.style.overflow = this.options.overflow;

					// Reset the display
					this.elem.style.display = this.options.display;
					if ( jQuery.css(this.elem, "display") == "none" )
						this.elem.style.display = "block";
				}

				// Hide the element if the "hide" operation was done
				if ( this.options.hide )
					jQuery(this.elem).hide();

				// Reset the properties, if the item has been hidden or shown
				if ( this.options.hide || this.options.show )
					for ( var p in this.options.curAnim )
						jQuery.attr(this.elem.style, p, this.options.orig[p]);
					
				// Execute the complete function
				this.options.complete.call( this.elem );
			}

			return false;
		} else {
			var n = t - this.startTime;
			this.state = n / this.options.duration;

			// Perform the easing function, defaults to swing
			this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
			this.now = this.start + ((this.end - this.start) * this.pos);

			// Perform the next step of the animation
			this.update();
		}

		return true;
	}
function(gotoEnd){
		var t = now();

		if ( gotoEnd || t >= this.options.duration + this.startTime ) {
			this.now = this.end;
			this.pos = this.state = 1;
			this.update();

			this.options.curAnim[ this.prop ] = true;

			var done = true;
			for ( var i in this.options.curAnim )
				if ( this.options.curAnim[i] !== true )
					done = false;

			if ( done ) {
				if ( this.options.display != null ) {
					// Reset the overflow
					this.elem.style.overflow = this.options.overflow;

					// Reset the display
					this.elem.style.display = this.options.display;
					if ( jQuery.css(this.elem, "display") == "none" )
						this.elem.style.display = "block";
				}

				// Hide the element if the "hide" operation was done
				if ( this.options.hide )
					jQuery(this.elem).hide();

				// Reset the properties, if the item has been hidden or shown
				if ( this.options.hide || this.options.show )
					for ( var p in this.options.curAnim )
						jQuery.attr(this.elem.style, p, this.options.orig[p]);
					
				// Execute the complete function
				this.options.complete.call( this.elem );
			}

			return false;
		} else {
			var n = t - this.startTime;
			this.state = n / this.options.duration;

			// Perform the easing function, defaults to swing
			this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
			this.now = this.start + ((this.end - this.start) * this.pos);

			// Perform the next step of the animation
			this.update();
		}

		return true;
	}
function ( gotoEnd ) { var t = now ( ) ; if ( gotoEnd || t >= this . options . duration + this . startTime ) { this . now = this . end ; this . pos = this . state = 1 ; this . update ( ) ; this . options . curAnim [ this . prop ] = true ; var done = true ; for ( var i in this . options . curAnim ) if ( this . options . curAnim [ i ] !== true ) done = false ; if ( done ) { if ( this . options . display != null ) { // Reset the overflow this . elem . style . overflow = this . options . overflow ; // Reset the display this . elem . style . display = this . options . display ; if ( jQuery . css ( this . elem , "display" ) == "none" ) this . elem . style . display = "block" ; } // Hide the element if the "hide" operation was done if ( this . options . hide ) jQuery ( this . elem ) . hide ( ) ; // Reset the properties, if the item has been hidden or shown if ( this . options . hide || this . options . show ) for ( var p in this . options . curAnim ) jQuery . attr ( this . elem . style , p , this . options . orig [ p ] ) ; // Execute the complete function this . options . complete . call ( this . elem ) ; } return false ; } else { var n = t - this . startTime ; this . state = n / this . options . duration ; // Perform the easing function, defaults to swing this . pos = jQuery . easing [ this . options . easing || ( jQuery . easing . swing ? "swing" : "linear" ) ] ( this . state , n , 0 , 1 , this . options . duration ) ; this . now = this . start + ( ( this . end - this . start ) * this . pos ) ; // Perform the next step of the animation this . update ( ) ; } return true ; }
Each step of an animation
Each step of an animation
End animation function