czt
2025-05-26 71df484843f8df041db16e263851775a7c8e00b6
1
Dragdrop=function(window){var doc=window.document;var E={on:function(el,type,fn){el.addEventListener?el.addEventListener(type,fn,false):el.attachEvent?el.attachEvent("on"+type,fn):el['on'+type]=fn},un:function(el,type,fn){el.removeEventListener?el.removeEventListener(type,fn,false):el.detachEvent?el.detachEvent("on"+type,fn):el['on'+type]=null},evt:function(e){return e||window.event}};return function(opt){var conf=null,defaultConf,diffX,diffY;function Config(opt){this.target=opt.target;this.bridge=opt.bridge;this.dragable=opt.dragable!=false;this.dragX=opt.dragX!=false;this.dragY=opt.dragY!=false;this.area=opt.area;this.callback=opt.callback};function Dragdrop(opt){if(!opt){return}conf=new Config(opt);defaultConf=new Config(opt);conf.bridge?E.on(conf.bridge,'mousedown',mousedown):E.on(conf.target,'mousedown',mousedown)};Dragdrop.prototype={dragX:function(){conf.dragX=true;conf.dragY=false},dragY:function(b){conf.dragY=true;conf.dragX=false},dragAll:function(){conf.dragX=true;conf.dragY=true},setArea:function(a){conf.area=a},setBridge:function(b){conf.bridge=b},setDragable:function(b){conf.dragable=b},reStore:function(){conf=new Config(defaultConf);conf.target.style.top='0px';conf.target.style.left='0px'},getDragX:function(){return conf.dragX},getDragY:function(){return conf.dragY}};function mousedown(e){e=E.evt(e);var el=conf.target;el.style.position='absolute';el.style.cursor='move';if(el.setCapture){E.on(el,"losecapture",mouseup);el.setCapture();e.cancelBubble=true}else if(window.captureEvents){e.stopPropagation();E.on(window,"blur",mouseup);e.preventDefault()}diffX=e.clientX-el.offsetLeft;diffY=e.clientY-el.offsetTop;E.on(doc,'mousemove',mousemove);E.on(doc,'mouseup',mouseup)};function mousemove(e){var el=conf.target,e=E.evt(e),moveX=e.clientX-diffX,moveY=e.clientY-diffY;var minX,maxX,minY,maxY;if(conf.area){minX=conf.area[0];maxX=conf.area[1];minY=conf.area[2];maxY=conf.area[3];moveX<minX&&(moveX=minX);moveX>maxX&&(moveX=maxX);moveY<minY&&(moveY=minY);moveY>maxY&&(moveY=maxY)}if(conf.dragable){conf.dragX&&(el.style.left=moveX+'px');conf.dragY&&(el.style.top=moveY+'px');if(conf.callback){var obj={moveX:moveX,moveY:moveY};conf.callback.call(conf,obj)}}};function mouseup(e){var el=conf.target;el.style.cursor='default';E.un(doc,'mousemove',mousemove);E.un(doc,'mouseup',mouseup);if(el.releaseCapture){E.un(el,"losecapture",mouseup);el.releaseCapture()}if(window.releaseEvents){E.un(window,"blur",mouseup)}};return new Dragdrop(opt)}}(this);