2 * Interface Elements for jQuery
\r
5 * http://interface.eyecon.ro
\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
15 * Utility object that helps to make custom autoscrollers.
\r
18 * $('div.dragMe').Draggable(
\r
20 * onStart : function()
\r
22 * $.iAutoscroller.start(this, document.getElementsByTagName('body'));
\r
24 * onStop : function()
\r
26 * $.iAutoscroller.stop();
\r
31 * @description Utility object that helps to make custom autoscrollers
\r
33 * @cat Plugins/Interface
\r
34 * @author Stefan Petre
\r
37 jQuery.iAutoscroller = {
\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
49 start: function(el, els, step, interval)
\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
58 doScroll : function()
\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
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
72 if (jQuery.iAutoscroller.elToScroll.dragCfg && jQuery.iAutoscroller.elToScroll.dragCfg.init == true) {
\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
80 elementData = jQuery.extend(
\r
81 jQuery.iUtil.getPositionLite(jQuery.iAutoscroller.elToScroll),
\r
82 jQuery.iUtil.getSizeLite(jQuery.iAutoscroller.elToScroll)
\r
86 jQuery.iAutoscroller.elsToScroll[i].parentData.t > 0
\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
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
101 * This is called to stop autoscrolling
\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