]> git.sur5r.net Git - contagged/blobdiff - scripts/interface/ifxshake.js
JavaScript updates (migration to JQuery + Interface)
[contagged] / scripts / interface / ifxshake.js
diff --git a/scripts/interface/ifxshake.js b/scripts/interface/ifxshake.js
new file mode 100644 (file)
index 0000000..0fbf2ab
--- /dev/null
@@ -0,0 +1,97 @@
+/**\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