diff libraries/jquery.pause/jquery.pause.js @ 5:c69a71b4f40f

Add slideshow module
author Chris Cannam
date Thu, 07 Dec 2017 14:46:23 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libraries/jquery.pause/jquery.pause.js	Thu Dec 07 14:46:23 2017 +0000
@@ -0,0 +1,94 @@
+/*!
+ * Pause jQuery plugin v0.1
+ *
+ * Copyright 2010 by Tobia Conforto <tobia.conforto@gmail.com>
+ *
+ * Based on Pause-resume-animation jQuery plugin by Joe Weitzel
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or(at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/* Changelog:
+ *
+ * 0.1    2010-06-13  Initial release
+ */
+(function() {
+	var $ = jQuery,
+		pauseId = 'jQuery.pause',
+		uuid = 1,
+		oldAnimate = $.fn.animate,
+		anims = {};
+
+	function now() { return new Date().getTime(); }
+
+	$.fn.animate = function(prop, speed, easing, callback) {
+		var optall = $.speed(speed, easing, callback);
+		optall.complete = optall.old; // unwrap callback
+		return this.each(function() {
+			// check pauseId
+			if (! this[pauseId])
+				this[pauseId] = uuid++;
+			// start animation
+			var opt = $.extend({}, optall);
+			oldAnimate.apply($(this), [prop, $.extend({}, opt)]);
+			// store data
+			anims[this[pauseId]] = {
+				run: true,
+				prop: prop,
+				opt: opt,
+				start: now(),
+				done: 0
+			};
+		});
+	};
+
+	$.fn.pause = function() {
+		return this.each(function() {
+			// check pauseId
+			if (! this[pauseId])
+				this[pauseId] = uuid++;
+			// fetch data
+			var data = anims[this[pauseId]];
+			if (data && data.run) {
+				data.done += now() - data.start;
+				if (data.done > data.opt.duration) {
+					// remove stale entry
+					delete anims[this[pauseId]];
+				} else {
+					// pause animation
+					$(this).stop();
+					data.run = false;
+				}
+			}
+		});
+	};
+
+	$.fn.resume = function() {
+		return this.each(function() {
+			// check pauseId
+			if (! this[pauseId])
+				this[pauseId] = uuid++;
+			// fetch data
+			var data = anims[this[pauseId]];
+			if (data && ! data.run) {
+				// resume animation
+				data.opt.duration -= data.done;
+				data.done = 0;
+				data.run = true;
+				data.start = now();
+				oldAnimate.apply($(this), [data.prop, $.extend({}, data.opt)]);
+			}
+		});
+	};
+})();
\ No newline at end of file