Thomas, I''m mostly writing this to you. A couple weeks ago I grabbed the latest SVN version of dragdrop.js because I needed the auto-scroll functionality. I just fixed something in that script that wasn''t working correctly and thought you might want to hear about it. You may have already caught it since I grabbed the script but here it is anyway. In the updateDrag() function of the Draggable object, in the "if (this.options.scroll) {}" block, you had a line that said var p Position.page(this.options.scroll). That was giving me problems when my page was scrolled down at all. With the page scrolled down at all, the div with the overflow scrollbar would scroll itself immediately upon a draggble within it being dragged, instead of only when the draggable reached the bottom border of the scrollable div. To fix this, I changed the Position.page to Position.cumulativeOffset and commented out the 2 lines below it where you were adding the scrollLeft and scrollTop values to the p[0] and p[1] values. Now it works just fine. See the new updateDrag function below. Why were you using Position.page? updateDrag: function(event, pointer) { if(!this.dragging) this.startDrag(event); Position.prepare(); Droppables.show(pointer, this.element); Draggables.notify(''onDrag'', this, event); this.draw(pointer); if(this.options.change) this.options.change(this); if(this.options.scroll) { //if(this.scrollInterval) this.scroll(); this.stopScrolling(); //var p = Position.page(this.options.scroll); var p = Position.cumulativeOffset(this.options.scroll); //p[0] += this.options.scroll.scrollLeft; //p[1] += this.options.scroll.scrollTop; p.push(p[0]+this.options.scroll.offsetWidth); p.push(p[1]+this.options.scroll.offsetHeight); var speed = [0,0]; if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] pointer[0]-(p[0]+this.options.scrollSensitivity); if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] pointer[1]-(p[1]+this.options.scrollSensitivity); if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] pointer[0]-(p[2]-this.options.scrollSensitivity); if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] pointer[1]-(p[3]-this.options.scrollSensitivity); this.startScrolling(speed); } // fix AppleWebKit rendering if(navigator.appVersion.indexOf(''AppleWebKit'')>0) window.scrollBy(0,0); Event.stop(event); }, Sincerely, Ryan Gahl Design Engineer Camtronics Medical Systems (an Emageon Company) Ryan.gahl-nlycWCgr5/vuufBYgWm87A@public.gmane.org 262-369-3251 The information transmitted in this electronic mail is intended only for the person or entity to which it is addressed and may contain confidential, proprietary, and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from all computers. _______________________________________________ Rails-spinoffs mailing list Rails-spinoffs-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs