]> git.sur5r.net Git - contagged/blob - scripts/interface/iautoscroller.js
avoid deprecation warnings in PHP 5.3+
[contagged] / scripts / interface / iautoscroller.js
1 /**\r
2  * Interface Elements for jQuery\r
3  * Autoscroller\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  * Utility object that helps to make custom autoscrollers.\r
16  * \r
17  * @example\r
18  *              $('div.dragMe').Draggable(\r
19  *                      {\r
20  *                              onStart : function()\r
21  *                              {\r
22  *                                      $.iAutoscroller.start(this, document.getElementsByTagName('body'));\r
23  *                              },\r
24  *                              onStop : function()\r
25  *                              {\r
26  *                                      $.iAutoscroller.stop();\r
27  *                              }\r
28  *                      }\r
29  *              );\r
30  *\r
31  * @description Utility object that helps to make custom autoscrollers\r
32  * @type jQuery\r
33  * @cat Plugins/Interface\r
34  * @author Stefan Petre\r
35  */\r
36 \r
37 jQuery.iAutoscroller = {\r
38         timer: null,\r
39         elToScroll: null,\r
40         elsToScroll: null,\r
41         step: 10,\r
42         /**\r
43          * This is called to start autoscrolling\r
44          * @param DOMElement el the element used as reference\r
45          * @param Array els collection of elements to scroll\r
46          * @param Integer step the pixels scroll on each step\r
47          * @param Integer interval miliseconds between each step\r
48          */\r
49         start: function(el, els, step, interval)\r
50         {\r
51                 jQuery.iAutoscroller.elToScroll = el;\r
52                 jQuery.iAutoscroller.elsToScroll = els;\r
53                 jQuery.iAutoscroller.step = parseInt(step)||10;\r
54                 jQuery.iAutoscroller.timer = window.setInterval(jQuery.iAutoscroller.doScroll, parseInt(interval)||40);\r
55         },\r
56         \r
57         //private function\r
58         doScroll : function()\r
59         {\r
60                 for (i=0;i<jQuery.iAutoscroller.elsToScroll.length; i++) {\r
61                                 if(!jQuery.iAutoscroller.elsToScroll[i].parentData) {\r
62                                         jQuery.iAutoscroller.elsToScroll[i].parentData = jQuery.extend(\r
63                                                 jQuery.iUtil.getPositionLite(jQuery.iAutoscroller.elsToScroll[i]),\r
64                                                 jQuery.iUtil.getSizeLite(jQuery.iAutoscroller.elsToScroll[i]),\r
65                                                 jQuery.iUtil.getScroll(jQuery.iAutoscroller.elsToScroll[i])\r
66                                         );\r
67                                 } else {\r
68                                         jQuery.iAutoscroller.elsToScroll[i].parentData.t = jQuery.iAutoscroller.elsToScroll[i].scrollTop;\r
69                                         jQuery.iAutoscroller.elsToScroll[i].parentData.l = jQuery.iAutoscroller.elsToScroll[i].scrollLeft;\r
70                                 }\r
71                                 \r
72                                 if (jQuery.iAutoscroller.elToScroll.dragCfg && jQuery.iAutoscroller.elToScroll.dragCfg.init == true) {\r
73                                         elementData = {\r
74                                                 x : jQuery.iAutoscroller.elToScroll.dragCfg.nx,\r
75                                                 y : jQuery.iAutoscroller.elToScroll.dragCfg.ny,\r
76                                                 wb : jQuery.iAutoscroller.elToScroll.dragCfg.oC.wb,\r
77                                                 hb : jQuery.iAutoscroller.elToScroll.dragCfg.oC.hb\r
78                                         };\r
79                                 } else {\r
80                                         elementData = jQuery.extend(\r
81                                                 jQuery.iUtil.getPositionLite(jQuery.iAutoscroller.elToScroll),\r
82                                                 jQuery.iUtil.getSizeLite(jQuery.iAutoscroller.elToScroll)\r
83                                         );\r
84                                 }\r
85                                 if (\r
86                                         jQuery.iAutoscroller.elsToScroll[i].parentData.t > 0\r
87                                          && \r
88                                         jQuery.iAutoscroller.elsToScroll[i].parentData.y + jQuery.iAutoscroller.elsToScroll[i].parentData.t > elementData.y) {\r
89                                         jQuery.iAutoscroller.elsToScroll[i].scrollTop -= jQuery.iAutoscroller.step;\r
90                                 } else if (jQuery.iAutoscroller.elsToScroll[i].parentData.t <= jQuery.iAutoscroller.elsToScroll[i].parentData.h && jQuery.iAutoscroller.elsToScroll[i].parentData.t + jQuery.iAutoscroller.elsToScroll[i].parentData.hb < elementData.y + elementData.hb) {\r
91                                         jQuery.iAutoscroller.elsToScroll[i].scrollTop += jQuery.iAutoscroller.step;\r
92                                 }\r
93                                 if (jQuery.iAutoscroller.elsToScroll[i].parentData.l > 0 && jQuery.iAutoscroller.elsToScroll[i].parentData.x + jQuery.iAutoscroller.elsToScroll[i].parentData.l > elementData.x) {\r
94                                         jQuery.iAutoscroller.elsToScroll[i].scrollLeft -= jQuery.iAutoscroller.step;\r
95                                 } else if (jQuery.iAutoscroller.elsToScroll[i].parentData.l <= jQuery.iAutoscroller.elsToScroll[i].parentData.wh && jQuery.iAutoscroller.elsToScroll[i].parentData.l + jQuery.iAutoscroller.elsToScroll[i].parentData.wb < elementData.x + elementData.wb) {\r
96                                         jQuery.iAutoscroller.elsToScroll[i].scrollLeft += jQuery.iAutoscroller.step;\r
97                                 }\r
98                 }\r
99         },\r
100         /**\r
101          * This is called to stop autoscrolling\r
102          */\r
103         stop: function()\r
104         {\r
105                 window.clearInterval(jQuery.iAutoscroller.timer);\r
106                 jQuery.iAutoscroller.elToScroll = null;\r
107                 jQuery.iAutoscroller.elsToScroll = null;\r
108                 for (i in jQuery.iAutoscroller.elsToScroll) {\r
109                         jQuery.iAutoscroller.elsToScroll[i].parentData = null;\r
110                 }\r
111         }\r
112 };