Changeset 1530 for trunk/jabberit_messenger/js/dragdrop.js
- Timestamp:
- 10/27/09 14:17:10 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/jabberit_messenger/js/dragdrop.js
r382 r1530 1 1 (function() 2 2 { 3 var _element = null; 4 5 function _config(pObj, pEvent, pHandler) 3 var _element = null; 4 var _elementA = null; 5 var _elementB = null; 6 var _parent = null; 7 8 function _configEvent(pObj, pEvent, pHandler) 6 9 { 7 10 if ( typeof pObj == 'object' ) … … 9 12 if ( pEvent.substring(0, 2) == 'on' ) 10 13 pEvent = pEvent.substring(2, pEvent.length); 11 14 12 15 if ( arguments.length == 3 ) 13 16 { … … 19 22 else if ( arguments.length == 4 ) 20 23 { 21 if ( pObj.removeEventListener )24 if ( pObj.removeEventListener && pObj.removeEventListener != 'undefined') 22 25 pObj.removeEventListener(pEvent, pHandler, false); 23 26 else if ( pObj.detachEvent ) 24 27 pObj.detachEvent('on' + pEvent, pHandler); 25 28 } 29 } 30 } 31 32 function _drag(e) 33 { 34 if (typeof e.preventDefault != 'undefined') 35 e.preventDefault(); 36 else 37 e.onselectstart = new Function("return false;"); 38 39 _element = ( e.target ) ? e.target : e.srcElement; 40 41 if ( _element ) 42 { 43 _configEvent(_element, 'onmousemove', _mouseMove); 44 _configEvent(top.document, 'onmousemove', _mouseMove); 45 46 _configEvent(_element, 'onmouseup', _mouseUp); 47 _configEvent(top.document, 'onmouseup', _mouseUp); 48 } 49 } 50 51 function _elementShadow( pId ) 52 { 53 if( _elementA ) 54 { 55 var _elShadow = document.createElement("div"); 56 _elShadow.id = _elementA.id + "__Shadow"; 57 _elShadow.setAttribute("onselectstart" , "return false"); 58 _elShadow.style.width = _elementA.style.width; 59 _elShadow.style.height = _elementA.style.height; 60 _elShadow.style.top = _elementA.style.top; 61 _elShadow.style.left = _elementA.style.left; 62 _elShadow.style.zIndex = _elementA.style.zIndex; 63 _elShadow.className = "x-shadow_Div"; 64 65 return _elShadow; 66 } 67 } 68 69 function _load() 70 { 71 if( arguments.length > 0 ) 72 { 73 var pId = arguments[0]; 74 75 _configEvent(document.getElementById( pId + "__draggable"), 'onmousedown', _mouseDownShadow); 26 76 } 27 77 } … … 71 121 CoordX = ev.clientX + document.body.scrollLeft - document.body.clientLeft; 72 122 CoordY = ev.clientY + document.body.scrollTop - document.body.clientTop; 123 73 124 return { 74 125 'x' : CoordX, … … 97 148 if ( _element ) 98 149 { 99 _config(_element, 'onmousemove', _mouseMove, 'remove'); 100 _config(top.document, 'onmousemove', _mouseMove, 'remove'); 101 102 _config(_element, 'onmouseup', _mouseUp, 'remove'); 103 _config(top.document, 'onmouseup', _mouseUp, 'remove'); 150 _mouseUpShadow(); 151 152 _configEvent(_element, 'onmousemove', _mouseMove, 'remove'); 153 _configEvent(top.document, 'onmousemove', _mouseMove, 'remove'); 154 155 _configEvent(_element, 'onmouseup', _mouseUp, 'remove'); 156 _configEvent(top.document, 'onmouseup', _mouseUp, 'remove'); 104 157 105 158 _element.mouseOffset = null; … … 108 161 } 109 162 110 function _ toDrag(el)111 { 112 if ( el.getAttribute('dragdrop_parent') == null )113 { 114 if ( el.getAttribute('dragdrop_child') != null)163 function _mouseDownShadow(e) 164 { 165 try 166 { 167 if( arguments.length > 0 ) 115 168 { 116 var children = 0; 117 while ( (++children < 5) && (el.getAttribute('dragdrop_parent') == null) ) 118 el = el.parentNode; 169 var _el = ( e.target ) ? e.target : e.srcElement; 170 var _id = (_el.id.substring(0, _el.id.indexOf("__draggable"))); 171 172 _elementA = document.getElementById( _id + "__parent"); 173 _elementB = _elementShadow( _id + "__parent"); 174 175 _elementA.style.left = '-1500px'; 176 _parent = _elementA.parentNode; 177 178 var _B = _parent.appendChild(_elementB); 179 180 _configEvent( _elementB, 'onmouseup', _mouseUpShadow); 181 _configEvent( _elementB, 'onmousemove', _drag); 119 182 } 120 if ( el.getAttribute('dragdrop_parent') == null ) 121 el = false; 122 } 123 return el; 124 } 125 126 function _drag(e) 127 { 128 if (typeof e.preventDefault != 'undefined') 129 e.preventDefault(); 130 else 131 e.onselectstart = new Function("return false;"); 132 133 var el = ( e.target ) ? e.target : e.srcElement; 134 135 el = _toDrag(el); 136 137 if ( el ) 138 { 139 _element = el; 140 141 _config(el, 'onmousemove', _mouseMove); 142 _config(top.document, 'onmousemove', _mouseMove); 143 144 _config(el, 'onmouseup', _mouseUp); 145 _config(top.document, 'onmouseup', _mouseUp); 146 } 147 } 148 149 function _set(_pObject) 150 { 151 if ( typeof _pObject != 'object' ) 152 return false; 153 154 _pObject.setAttribute('dragdrop_parent', 'true'); 155 156 _config(_pObject, 'onmousedown', _drag); 157 } 158 159 function DragDrop() 160 { 161 } 162 163 DragDrop.prototype.drag = _set; 164 window.JITDragDrop = DragDrop; 165 } 166 )(); 183 184 }catch(e){} 185 } 186 187 function _mouseUpShadow() 188 { 189 try 190 { 191 _elementA.style.top = _elementB.style.top; 192 _elementA.style.left = _elementB.style.left; 193 194 var _B = _parent.removeChild(_elementB); 195 196 _elementA = null; 197 _elementB = null; 198 _element = null; 199 } 200 catch(e){} 201 } 202 203 function dragdrop(){} 204 205 dragdrop.prototype.set = _load; 206 window.dragdrop = dragdrop; 207 208 })();
Note: See TracChangeset
for help on using the changeset viewer.