web/res/metadataplayer/test/interface 1.2/source/ifxshake.js
changeset 99 6cb4d10f0b8b
child 133 9578d3ddce17
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/res/metadataplayer/test/interface 1.2/source/ifxshake.js	Wed Apr 06 16:26:16 2011 +0200
@@ -0,0 +1,97 @@
+/**
+ * Interface Elements for jQuery
+ * FX - shake
+ * 
+ * http://interface.eyecon.ro
+ * 
+ * Copyright (c) 2006 Stefan Petre
+ * Dual licensed under the MIT (MIT-LICENSE.txt) 
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *   
+ *
+ */
+
+/**
+ * @name Shake
+ * @description makes the element to shake
+ * @param Integer times how many tomes to shake the element
+ * @param Function callback (optional) A function to be executed whenever the animation completes.
+ * @type jQuery
+ * @cat Plugins/Interface
+ * @author Stefan Petre
+ */
+jQuery.fn.Shake = function (times, callback) {
+	return this.queue('interfaceFX',function(){
+		if (!jQuery.fxCheckTag(this)) {
+			jQuery.dequeue(this, 'interfaceFX');
+			return false;
+		}
+		var e = new jQuery.fx.Shake(this, times, callback);
+		e.shake();
+	});
+};
+jQuery.fx.Shake = function (e, times, callback)
+{
+	var z = this;
+	z.el = jQuery(e);
+	z.el.show();
+	z.times = parseInt(times)||3;
+	z.callback = callback;
+	z.cnt = 1;
+	z.oldStyle = {};
+	z.oldStyle.position = z.el.css('position');
+	z.oldStyle.top = parseInt(z.el.css('top'))||0;
+	z.oldStyle.left = parseInt(z.el.css('left'))||0;
+	
+	if (z.oldStyle.position != 'relative' && z.oldStyle.position != 'absolute') {
+		z.el.css('position', 'relative');
+	}
+	
+	z.shake = function ()
+	{
+		z.cnt ++;
+		
+		z.e = new jQuery.fx(
+			z.el.get(0), 
+			{
+				duration: 60,
+				complete : function ()
+				{
+					z.e = new jQuery.fx(
+						z.el.get(0), 
+						 {
+							 duration: 60,
+							 complete : function ()
+							 {
+								z.e = new jQuery.fx(
+									e,
+									{
+										duration: 60, 
+										complete: function(){
+											if (z.cnt <= z.times)
+												z.shake();
+											else {
+												z.el.css('position', z.oldStyle.position).css('top', z.oldStyle.top + 'px').css('left', z.oldStyle.left + 'px');
+												jQuery.dequeue(z.el.get(0), 'interfaceFX');
+												if (z.callback && z.callback.constructor == Function) {
+													z.callback.apply(z.el.get(0));
+												}
+											}
+										}
+									},
+									'left'
+								);
+								z.e.custom (z.oldStyle.left-20, z.oldStyle.left);
+							 }
+						},
+						'left'
+					);
+					z.e.custom (z.oldStyle.left+20, z.oldStyle.left-20);
+				}
+			},
+			'left'
+		);
+		z.e.custom (z.oldStyle.left, z.oldStyle.left+20);
+	};
+		
+};
\ No newline at end of file