source: trunk/instant_messenger/js/dragdrop.js @ 151

Revision 151, 3.7 KB checked in by niltonneto, 16 years ago (diff)

Commit da nova versão do módulo, usando agente em C.
Vide Página do módulo do Trac:
http://www.expressolivre.org/dev/wiki/messenger

A versão anterior encontra-se na subpasta bkp (32/64).

Line 
1/**
2* @AUTHOR: Alexandre Correia - alexandrecorreia [.at.] celepar [.dot.] pr [.dot.] gov [.dot.] br
3* @AUTHOR: Rodrigo Souza - rodrigosouzadossantos [.at.] gmail [.dot.] com
4* @COPYLEFT: GPL - http://www.gnu.org/copyleft/gpl.html
5* @DATE: 10/10/2007
6* @LAST CHANGE: 11/10/2007
7* @BRIEF:
8**/
9
10function DragDrop()
11{
12        this.dragObject         = null;
13        this.mouseOffset        = null;
14        this.documentMouseMove  = null;
15        this.documentMouseUp    = null;
16
17}
18
19DragDrop.prototype = {
20        "drag" : function(ev, pObject)
21        {
22                function mouseMove(pEv, pObject, pTarget)
23                {
24                        function getMouseOffset(pThis, target, pEv)
25                        {
26                                function getPosition(pObject)
27                                {
28                                        try
29                                        {
30                                                var left = 0;
31                                                var top  = 0;
32
33                                                while (pObject.offsetParent)
34                                                {
35                                                        left += pObject.offsetLeft;
36                                                        top  += pObject.offsetTop;
37                                                        pObject = pObject.offsetParent;
38                                                }
39
40                                                left += pObject.offsetLeft;
41                                                top  += pObject.offsetTop;
42
43                                                return {x:left, y:top};
44                                        }catch(e){}
45                                }
46                                try
47                                {
48                                        var ev = pEv || window.event;
49
50                                        var docPos = getPosition(target);
51                                        var mousePos = mouseCoords(ev);
52                                        return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
53                                }
54                                catch(e){}
55                        }
56                        function mouseCoords(pEv)
57                        {
58                                try
59                                {
60                                        var ev = pEv;
61                                        var CoordX = "";
62                                        var CoordY = "";
63
64                                        if(ev.pageX || ev.pageY)
65                                                return {x:ev.pageX, y:ev.pageY};
66
67                                        CoordX = ev.clientX + document.body.scrollLeft - document.body.clientLeft;
68                                        CoordY = ev.clientY + document.body.scrollTop  - document.body.clientTop;
69                                        return { x:CoordX, y:CoordY };
70                                }
71                                catch(e){}
72                        }
73                        try
74                        {
75                                if ( pObject.mouseOffset == null )
76                                        pObject.mouseOffset = getMouseOffset(pObject, pTarget, pEv);
77
78                                var ev = pEv || window.event;
79                                var mousePos = mouseCoords(ev);
80
81                                if( pObject.dragObject )
82                                {
83                                        var x = mousePos.x - pObject.mouseOffset.x;
84                                        var y = mousePos.y - pObject.mouseOffset.y;
85                                        pObject.dragObject.style.left = ( x < 0 ) ? 0 : x;
86                                        pObject.dragObject.style.top  = ( y < 0 ) ? 0 : y;
87                                }
88                                if ( typeof pObject.documentMouseMove == 'function' )
89                                        pObject.documentMouseMove();
90                        }
91                        catch(e){}
92                }
93                function mouseUp(pObject)
94                {
95                        try
96                        {
97                                if ( typeof pObject.documentMouseUp == 'function' )
98                                        pObject.documentMouseUp();
99                                pObject.dragObject = null;
100                                document.onmousemove = pObject.documentMouseMove;
101                                document.onmouseup = pObject.documentMouseUp;
102                                pObject.documentMouseMove = pObject.documentMouseUp = null;
103                                pObject.mouseOffset = null;
104                        }
105                        catch(e){}
106                }
107                try
108                {
109                        if( !pObject )
110                                return;
111
112                        if (typeof ev.preventDefault != 'undefined')
113                                ev.preventDefault();
114                        else
115                                pObject.onselectstart = new Function("return false;");
116
117                        this.mouseOffset = null;
118
119                        if ( pObject.getAttribute('dragdrop') === "true" )
120                        {
121                                var _this = this;
122                                pObject.style.cursor = "pointer";
123                                pObject.style.position = 'absolute';
124
125                                pObject.onmousemove = function(ev)
126                                {
127                                        mouseMove(ev, _this, pObject);
128                                };
129
130                                if ( typeof document.onmousemove == 'function' && document.onmousemove != pObject.onmousemove )
131                                        this.documentMouseMove = document.onmousemove;
132
133                                document.onmousemove = function(ev)
134                                {
135                                        mouseMove(ev, _this, pObject);
136                                };
137
138                                pObject.onmouseup = function()
139                                {
140                                        mouseUp(_this);
141                                };
142
143                                if ( typeof document.onmouseup == 'function' && document.onmouseup != pObject.onmouseup )
144                                        this.documentMouseUp = document.onmouseup;
145
146                                document.onmouseup = pObject.onmouseup;
147
148                                var el = ( window.event ) ? window.event.srcElement : ev.target;
149
150                                if ( el.getAttribute('dragdrop') === "true" )
151                                {
152                                        _this.dragObject  = pObject;
153                                        return false;
154                                }
155                        }
156                }
157                catch(e){alert(e.description);}
158        }
159};
160
161var drag_drop = new DragDrop();
Note: See TracBrowser for help on using the repository browser.