]> git.sur5r.net Git - contagged/blob - scripts/interface/ifxbounce.js
JavaScript updates (migration to JQuery + Interface)
[contagged] / scripts / interface / ifxbounce.js
1 /**\r
2  * Interface Elements for jQuery\r
3  * FX - bounce\r
4  * \r
5  * http://interface.eyecon.ro\r
6  * \r
7  * Copyright (c) 2006 Stefan Petre\r
8  * Dual licensed under the MIT (MIT-LICENSE.txt) \r
9  * and GPL (GPL-LICENSE.txt) licenses.\r
10  *   \r
11  *\r
12  */\r
13 \r
14 /**\r
15  * @name Bounce\r
16  * @description makes the element to bounce\r
17  * @param Integer hight the hight in pxels for element to jumps to\r
18  * @param Function callback (optional) A function to be executed whenever the animation completes.\r
19  * @type jQuery\r
20  * @cat Plugins/Interface\r
21  * @author Stefan Petre\r
22  */\r
23 jQuery.fn.Bounce = function (hight, callback) {\r
24         return this.queue('interfaceFX', function(){\r
25                 if (!jQuery.fxCheckTag(this)) {\r
26                         jQuery.dequeue(this, 'interfaceFX');\r
27                         return false;\r
28                 }\r
29                 var e = new jQuery.fx.iBounce(this, hight, callback);\r
30                 e.bounce();\r
31         });\r
32 };\r
33 jQuery.fx.iBounce = function (e, hight, callback)\r
34 {\r
35         var z = this;\r
36         z.el = jQuery(e);\r
37         z.el.show();\r
38         z.callback = callback;\r
39         z.hight = parseInt(hight)||40;\r
40         z.oldStyle = {};\r
41         z.oldStyle.position = z.el.css('position');\r
42         z.oldStyle.top = parseInt(z.el.css('top'))||0;\r
43         z.oldStyle.left = parseInt(z.el.css('left'))||0;\r
44         \r
45         if (z.oldStyle.position != 'relative' && z.oldStyle.position != 'absolute') {\r
46                 z.el.css('position', 'relative');\r
47         }\r
48         \r
49         z.times = 5;\r
50         z.cnt = 1;\r
51         \r
52         z.bounce = function ()\r
53         {\r
54                 z.cnt ++;\r
55                 z.e = new jQuery.fx(\r
56                         z.el.get(0), \r
57                         {\r
58                          duration: 120,\r
59                          complete : function ()\r
60                          {\r
61                                 z.e = new jQuery.fx(\r
62                                         z.el.get(0), \r
63                                         {\r
64                                                 duration: 80,\r
65                                                 complete : function ()\r
66                                                 {\r
67                                                         z.hight = parseInt(z.hight/2);\r
68                                                         if (z.cnt <= z.times)\r
69                                                                 z.bounce();\r
70                                                         else {\r
71                                                                 z.el.css('position', z.oldStyle.position).css('top', z.oldStyle.top + 'px').css('left', z.oldStyle.left + 'px');\r
72                                                                 jQuery.dequeue(z.el.get(0), 'interfaceFX');\r
73                                                                 if (z.callback && z.callback.constructor == Function) {\r
74                                                                         z.callback.apply(z.el.get(0));\r
75                                                                 }\r
76                                                         }\r
77                                                 }\r
78                                         },\r
79                                         'top'\r
80                                 );\r
81                                 z.e.custom (z.oldStyle.top-z.hight, z.oldStyle.top);\r
82                          }\r
83                         }, \r
84                         'top'\r
85                 );\r
86                 z.e.custom (z.oldStyle.top, z.oldStyle.top-z.hight);\r
87         };\r
88                 \r
89 };