1 | |
---|
2 | (function() |
---|
3 | {var _element=null;var _elementA=null;var _elementB=null;var _parent=null;function _configEvent(pObj,pEvent,pHandler) |
---|
4 | {if(pObj&&typeof pObj=='object') |
---|
5 | {if(pEvent.substring(0,2)=='on') |
---|
6 | pEvent=pEvent.substring(2,pEvent.length);if(arguments.length==3) |
---|
7 | {if(pObj.addEventListener) |
---|
8 | pObj.addEventListener(pEvent,pHandler,false);else if(pObj.attachEvent) |
---|
9 | pObj.attachEvent('on'+pEvent,pHandler);} |
---|
10 | else if(arguments.length==4) |
---|
11 | {if(pObj.removeEventListener) |
---|
12 | {pObj.removeEventListener(pEvent,pHandler,false);} |
---|
13 | else if(pObj.detachEvent) |
---|
14 | {pObj.detachEvent('on'+pEvent,pHandler);}}}} |
---|
15 | function _drag(e) |
---|
16 | {if(typeof e.preventDefault!='undefined') |
---|
17 | e.preventDefault();else |
---|
18 | e.onselectstart=new Function("return false;");_element=(e.target)?e.target:e.srcElement;if(_element) |
---|
19 | {_configEvent(_element,'onmousemove',_mouseMove);_configEvent(top.document,'onmousemove',_mouseMove);_configEvent(_element,'onmouseup',_mouseUp);_configEvent(top.document,'onmouseup',_mouseUp);}} |
---|
20 | function _elementShadow(pId) |
---|
21 | {if(_elementA) |
---|
22 | {var _elShadow=document.createElement("div");_elShadow.id=_elementA.id+"__Shadow";_elShadow.setAttribute("onselectstart","return false");_elShadow.style.width=_elementA.style.width;_elShadow.style.height=_elementA.style.height;_elShadow.style.top=_elementA.style.top;_elShadow.style.left=_elementA.style.left;_elShadow.style.zIndex=_elementA.style.zIndex;_elShadow.className="x-shadow_Div";return _elShadow;}} |
---|
23 | function _load() |
---|
24 | {if(arguments.length>0) |
---|
25 | {var pId=arguments[0];_configEvent(document.getElementById(pId+"__draggable"),'onmousedown',_mouseDownShadow);}} |
---|
26 | function _getMouseOffset(e,el) |
---|
27 | {var docPos=_getPosition(el);var mousePos=_mouseCoords(e);return{'x':mousePos.x-docPos.x,'y':mousePos.y-docPos.y};} |
---|
28 | function _getPosition(_pObject) |
---|
29 | {var left=0;var top=0;while(_pObject.offsetParent) |
---|
30 | {left+=_pObject.offsetLeft;top+=_pObject.offsetTop;_pObject=_pObject.offsetParent;} |
---|
31 | left+=_pObject.offsetLeft;top+=_pObject.offsetTop;return{'x':left,'y':top};} |
---|
32 | function _mouseCoords(ev) |
---|
33 | {var CoordX="";var CoordY="";if(ev.pageX||ev.pageY) |
---|
34 | return{'x':ev.pageX,'y':ev.pageY};CoordX=ev.clientX+document.body.scrollLeft-document.body.clientLeft;CoordY=ev.clientY+document.body.scrollTop-document.body.clientTop;return{'x':CoordX,'y':CoordY};} |
---|
35 | function _mouseMove(e) |
---|
36 | {if(_element) |
---|
37 | {if(_element.mouseOffset==null) |
---|
38 | _element.mouseOffset=_getMouseOffset(e,_element);var mousePos=_mouseCoords(e);var x=mousePos.x-_element.mouseOffset.x;var y=mousePos.y-_element.mouseOffset.y;_element.style.left=((x<0)?0:x)+'px';_element.style.top=((y<0)?0:y)+'px';}} |
---|
39 | function _mouseUp() |
---|
40 | {if(_element) |
---|
41 | {_configEvent(_element,'onmousemove',_mouseMove,'remove');_configEvent(top.document,'onmousemove',_mouseMove,'remove');_configEvent(_element,'onmouseup',_mouseUp,'remove');_configEvent(top.document,'onmouseup',_mouseUp,'remove');_element.mouseOffset=null;_mouseUpShadow();}} |
---|
42 | function _mouseDownShadow(e) |
---|
43 | {try |
---|
44 | {if(arguments.length>0) |
---|
45 | {var _el=(e.target)?e.target:e.srcElement;var _id=(_el.id.substring(0,_el.id.indexOf("__draggable")));_elementA=document.getElementById(_id+"__parent");_elementB=_elementShadow(_id+"__parent");_elementA.style.left='-1500px';_parent=_elementA.parentNode;var _B=_parent.appendChild(_elementB);_configEvent(_elementB,'onmouseup',_mouseUpShadow);_configEvent(_elementB,'onmousemove',_drag);}}catch(e){}} |
---|
46 | function _mouseUpShadow() |
---|
47 | {try |
---|
48 | {_elementA.style.top=_elementB.style.top;_elementA.style.left=_elementB.style.left;var _B=_parent.removeChild(_elementB);_elementA=null;_elementB=null;_element=null;} |
---|
49 | catch(e){}} |
---|
50 | function _drag_drop(){} |
---|
51 | _drag_drop.prototype.set=_load;window._drag_drop=_drag_drop;})(); |
---|