--- /dev/null
+/**\r
+ * Interface Elements for jQuery\r
+ * FX - shake\r
+ * \r
+ * http://interface.eyecon.ro\r
+ * \r
+ * Copyright (c) 2006 Stefan Petre\r
+ * Dual licensed under the MIT (MIT-LICENSE.txt) \r
+ * and GPL (GPL-LICENSE.txt) licenses.\r
+ * \r
+ *\r
+ */\r
+\r
+/**\r
+ * @name Shake\r
+ * @description makes the element to shake\r
+ * @param Integer times how many tomes to shake the element\r
+ * @param Function callback (optional) A function to be executed whenever the animation completes.\r
+ * @type jQuery\r
+ * @cat Plugins/Interface\r
+ * @author Stefan Petre\r
+ */\r
+jQuery.fn.Shake = function (times, callback) {\r
+ return this.queue('interfaceFX',function(){\r
+ if (!jQuery.fxCheckTag(this)) {\r
+ jQuery.dequeue(this, 'interfaceFX');\r
+ return false;\r
+ }\r
+ var e = new jQuery.fx.Shake(this, times, callback);\r
+ e.shake();\r
+ });\r
+};\r
+jQuery.fx.Shake = function (e, times, callback)\r
+{\r
+ var z = this;\r
+ z.el = jQuery(e);\r
+ z.el.show();\r
+ z.times = parseInt(times)||3;\r
+ z.callback = callback;\r
+ z.cnt = 1;\r
+ z.oldStyle = {};\r
+ z.oldStyle.position = z.el.css('position');\r
+ z.oldStyle.top = parseInt(z.el.css('top'))||0;\r
+ z.oldStyle.left = parseInt(z.el.css('left'))||0;\r
+ \r
+ if (z.oldStyle.position != 'relative' && z.oldStyle.position != 'absolute') {\r
+ z.el.css('position', 'relative');\r
+ }\r
+ \r
+ z.shake = function ()\r
+ {\r
+ z.cnt ++;\r
+ \r
+ z.e = new jQuery.fx(\r
+ z.el.get(0), \r
+ {\r
+ duration: 60,\r
+ complete : function ()\r
+ {\r
+ z.e = new jQuery.fx(\r
+ z.el.get(0), \r
+ {\r
+ duration: 60,\r
+ complete : function ()\r
+ {\r
+ z.e = new jQuery.fx(\r
+ e,\r
+ {\r
+ duration: 60, \r
+ complete: function(){\r
+ if (z.cnt <= z.times)\r
+ z.shake();\r
+ else {\r
+ z.el.css('position', z.oldStyle.position).css('top', z.oldStyle.top + 'px').css('left', z.oldStyle.left + 'px');\r
+ jQuery.dequeue(z.el.get(0), 'interfaceFX');\r
+ if (z.callback && z.callback.constructor == Function) {\r
+ z.callback.apply(z.el.get(0));\r
+ }\r
+ }\r
+ }\r
+ },\r
+ 'left'\r
+ );\r
+ z.e.custom (z.oldStyle.left-20, z.oldStyle.left);\r
+ }\r
+ },\r
+ 'left'\r
+ );\r
+ z.e.custom (z.oldStyle.left+20, z.oldStyle.left-20);\r
+ }\r
+ },\r
+ 'left'\r
+ );\r
+ z.e.custom (z.oldStyle.left, z.oldStyle.left+20);\r
+ };\r
+ \r
+};
\ No newline at end of file