]> git.wh0rd.org - tt-rss.git/blobdiff - lib/dojo/dnd/autoscroll.js
add dijit/dojo stuff; initial ui mockup
[tt-rss.git] / lib / dojo / dnd / autoscroll.js
diff --git a/lib/dojo/dnd/autoscroll.js b/lib/dojo/dnd/autoscroll.js
new file mode 100644 (file)
index 0000000..27496c6
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+       Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
+       Available via Academic Free License >= 2.1 OR the modified BSD license.
+       see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojo.dnd.autoscroll"]){
+dojo._hasResource["dojo.dnd.autoscroll"]=true;
+dojo.provide("dojo.dnd.autoscroll");
+dojo.dnd.getViewport=function(){
+var d=dojo.doc,dd=d.documentElement,w=window,b=dojo.body();
+if(dojo.isMozilla){
+return {w:dd.clientWidth,h:w.innerHeight};
+}else{
+if(!dojo.isOpera&&w.innerWidth){
+return {w:w.innerWidth,h:w.innerHeight};
+}else{
+if(!dojo.isOpera&&dd&&dd.clientWidth){
+return {w:dd.clientWidth,h:dd.clientHeight};
+}else{
+if(b.clientWidth){
+return {w:b.clientWidth,h:b.clientHeight};
+}
+}
+}
+}
+return null;
+};
+dojo.dnd.V_TRIGGER_AUTOSCROLL=32;
+dojo.dnd.H_TRIGGER_AUTOSCROLL=32;
+dojo.dnd.V_AUTOSCROLL_VALUE=16;
+dojo.dnd.H_AUTOSCROLL_VALUE=16;
+dojo.dnd.autoScroll=function(e){
+var v=dojo.dnd.getViewport(),dx=0,dy=0;
+if(e.clientX<dojo.dnd.H_TRIGGER_AUTOSCROLL){
+dx=-dojo.dnd.H_AUTOSCROLL_VALUE;
+}else{
+if(e.clientX>v.w-dojo.dnd.H_TRIGGER_AUTOSCROLL){
+dx=dojo.dnd.H_AUTOSCROLL_VALUE;
+}
+}
+if(e.clientY<dojo.dnd.V_TRIGGER_AUTOSCROLL){
+dy=-dojo.dnd.V_AUTOSCROLL_VALUE;
+}else{
+if(e.clientY>v.h-dojo.dnd.V_TRIGGER_AUTOSCROLL){
+dy=dojo.dnd.V_AUTOSCROLL_VALUE;
+}
+}
+window.scrollBy(dx,dy);
+};
+dojo.dnd._validNodes={"div":1,"p":1,"td":1};
+dojo.dnd._validOverflow={"auto":1,"scroll":1};
+dojo.dnd.autoScrollNodes=function(e){
+for(var n=e.target;n;){
+if(n.nodeType==1&&(n.tagName.toLowerCase() in dojo.dnd._validNodes)){
+var s=dojo.getComputedStyle(n);
+if(s.overflow.toLowerCase() in dojo.dnd._validOverflow){
+var b=dojo._getContentBox(n,s),t=dojo.position(n,true);
+var w=Math.min(dojo.dnd.H_TRIGGER_AUTOSCROLL,b.w/2),h=Math.min(dojo.dnd.V_TRIGGER_AUTOSCROLL,b.h/2),rx=e.pageX-t.x,ry=e.pageY-t.y,dx=0,dy=0;
+if(dojo.isWebKit||dojo.isOpera){
+rx+=dojo.body().scrollLeft,ry+=dojo.body().scrollTop;
+}
+if(rx>0&&rx<b.w){
+if(rx<w){
+dx=-w;
+}else{
+if(rx>b.w-w){
+dx=w;
+}
+}
+}
+if(ry>0&&ry<b.h){
+if(ry<h){
+dy=-h;
+}else{
+if(ry>b.h-h){
+dy=h;
+}
+}
+}
+var _1=n.scrollLeft,_2=n.scrollTop;
+n.scrollLeft=n.scrollLeft+dx;
+n.scrollTop=n.scrollTop+dy;
+if(_1!=n.scrollLeft||_2!=n.scrollTop){
+return;
+}
+}
+}
+try{
+n=n.parentNode;
+}
+catch(x){
+n=null;
+}
+}
+dojo.dnd.autoScroll(e);
+};
+}