/*
jQuery plugin : pause / resume / stop / animation
Created by Dex Labs based on plugin by Joe Weitzel (http://plugins.jquery.com/project/Pause-Resume-animation)
*/		

(function($) {
	
	$.fn.startAnimation = function(params, duration, easing, callback) {
		$(this).animate( params, duration, easing, callback );
		var data = { target:this.get(0), params: params, duration: duration, easing: easing, callback: callback,
		startTime: new Date().getTime(), timePlayed: 0, timeRemaining: 0 };
		$(this).data('animation', data);
	}
		
	$.fn.pauseAnimation = function() {
		var data = $(this).data('animation');
		if(data.params) {
			jQuery(this).stop();
			var now = new Date().getTime();
			data.timePlayed += ( now - data.startTime );
			data.timeRemaining = data.duration - data.timePlayed;
			$(this).data('animation', data);
			if( data.timePlayed > data.duration ) {
				$(this).clearAnimation();
				return this;
			};
		};
		return this;
	};
		
	$.fn.resumeAnimation = function() {
		var data = $(this).data('animation');
		if(data.params) {
			this.animate( data.params, data.timeRemaining, data.easing, data.callback );
			data.startTime = new Date().getTime();
			$(this).data('animation', data);
			return this;
		};
	};
	
	$.fn.clearAnimation = function() {
		var data = $(this).data('animation');
		if(data.params) $(this).data('animation', {clead: true});
	};
	
	
}(jQuery));
