_grabObj = null; function EventCtrl(div){this.div = div; this.type = ''; this.mask = 0; this.pageX = 0; this.pageY = 0; this.moveW = 0; this.moveH = 0;}
EventCtrl.prototype.resetValue = function(){this.pageX = 0; this.pageY = 0; this.curX = 0; this.curY = 0; this.startX= 0; this.startY= 0; this.moveW = 0; this.moveH = 0; this.moveW_last = 0; this.moveH_last = 0;}
EventCtrl.prototype.linkCtrl = function(obj){if(obj&& !obj.eventCtrl) obj.eventCtrl=this; return this;}
function getCtrlFromElementIE(el,tagName){for(;el;el=el.parentElement) if((tagName==null|| el.tagName==tagName)&& el.eventCtrl) return el.eventCtrl; return null;}
function getCtrlFromEvent(e,tagName){var ctrl=_grabObj; if(js.Browse.dom_n==1||js.Browse.dom_n==2){e=window.event; var fromCtrl, toCtrl; if(ctrl==null){var mask=0, type=e.type; switch(type){case 'mouseover': case 'mouseout': fromCtrl = getCtrlFromElementIE(e.fromElement,tagName); toCtrl = getCtrlFromElementIE(e.toElement, tagName); if(fromCtrl!=toCtrl) ctrl=(type=="mouseover")?toCtrl:fromCtrl; if(!ctrl||(ctrl.mask&1)==0) ctrl=null; break; case 'mousedown': case 'mousemove': case 'mouseup': ctrl = getCtrlFromElementIE(e.srcElement,tagName); if(ctrl&&(ctrl.mask&2)!=0) break; default: ctrl=null; break;}}
 if(ctrl){ctrl.pageX = document.body.scrollLeft+e.clientX; ctrl.pageY = document.body.scrollTop+e.clientY; ctrl.type = e.type; ctrl.e = e;}}else if(js.Browse.dom_n==3){if(ctrl==null) ctrl=e.target.eventCtrl; if(ctrl){var mask=0; switch(e.type){case 'mouseover': case 'mouseout': mask|=1; break; case 'mousedown': case 'mousemove': case 'mouseup': mask|=2; break;}
if((ctrl.mask&mask)!=0){ctrl.pageX = e.pageX; ctrl.pageY = e.pageY; ctrl.type = e.type; ctrl.e = e;}else ctrl=null;}}else if(js.Browse.dom_n==4){if(ctrl==null){for(var t=e.target; t!=null; t=t.parentNode){if(( tagName==null||(t.nodeType==Node.ELEMENT_NODE&& t.tagName==tagName))&& ('undefined' != typeof(t.eventCtrl))){ctrl=t.eventCtrl; break;}}}
 if(ctrl){ctrl.pageX = e.clientX+window.scrollX; ctrl.pageY = e.clientY+window.scrollY; ctrl.type = e.type; ctrl.e = e;}}
return ctrl;}
function ech_mouseover(e){var ctrl = getCtrlFromEvent(e,null); if(ctrl&& ctrl.mouseoverFunc&& !ctrl.mouseoverState){ctrl.mouseoverState = true; if(ctrl.mouseoverFunc) ctrl.mouseoverFunc(ctrl);}}
function ech_mouseout(e){var ctrl = getCtrlFromEvent(e,null); if(ctrl&& ctrl.mouseoverFunc&& ctrl.mouseoverState){ctrl.mouseoverState = false; if(ctrl.mouseoutFunc) ctrl.mouseoutFunc(ctrl);}}
function ech_mousedown(e){var ctrl = getCtrlFromEvent(e,null); if(ctrl&& !ctrl.dragging){_grabObj = ctrl; ctrl.dragging=true; ctrl.dragged = false; ctrl.startX = ctrl.curX = ctrl.pageX; ctrl.startY = ctrl.curY = ctrl.pageY; ctrl.pageW = ctrl.pageX - js.Dom.getX(ctrl.div); ctrl.pageH = ctrl.pageY - js.Dom.getY(ctrl.div); if(ctrl.mousedown) ctrl.mousedown(ctrl); return false;}
 return true;}
function ech_mousemove(e){var ctrl = getCtrlFromEvent(e,null); if(ctrl&& ctrl.dragging){if(ctrl.curX!=ctrl.pageX|| ctrl.curY!=ctrl.pageY){if(Math.abs(ctrl.pageX-ctrl.startX)>5|| Math.abs(ctrl.pageY-ctrl.startY)>5) ctrl.dragged = true; ctrl.moveW_last = ctrl.curX - ctrl.startX; ctrl.moveH_last = ctrl.curY - ctrl.startY; ctrl.moveW = ctrl.pageX - ctrl.startX; ctrl.moveH = ctrl.pageY - ctrl.startY; if(ctrl.mousemove) ctrl.mousemove(ctrl); ctrl.curX = ctrl.pageX; ctrl.curY = ctrl.pageY;}
 return false;}
 return true;}
function ech_mouseup(e){var ctrl = getCtrlFromEvent(e,null); if(ctrl&& ctrl.dragging){_grabObj = null; ctrl.dragging = false; if(ctrl.mouseup) ctrl.mouseup(ctrl); if(!ctrl.dragged&& ctrl.mouseclick) ctrl.mouseclick(ctrl); ctrl.resetValue(); return false;}
 return true;}
function ech_attachMouseOverOut(div,ovrf,outf){if(!div.eventCtrl) div.eventCtrl = new EventCtrl(div); var ctrl = div.eventCtrl; ctrl.mouseoverState = false; ctrl.mouseoverFunc = ovrf; ctrl.mouseoutFunc = outf; js.Event.addEvent(div, "mouseover", ech_mouseover); js.Event.addEvent(div, "mouseout", ech_mouseout); ctrl.mask|=1; return ctrl;}
function ech_attachMouseDrag(div,dwnf,movf,upf,clkf){var doc; if(js.Browse.dom_n==1||js.Browse.dom_n==2){doc = div; js.Event.addEvent(doc, "mousedown", ech_mousedown); js.Event.addEvent(document, "mousemove", ech_mousemove); js.Event.addEvent(document, "mouseup", ech_mouseup);}else if(js.Browse.dom_n==3){doc = div.document; js.Event.addEvent(doc, "mousedown", ech_mousedown); js.Event.addEvent(doc, "mousemove", ech_mousemove); js.Event.addEvent(doc, "mouseup", ech_mouseup); doc.captureEvents(Event.MOUSEDOWN|Event.MOUSEMOVE|Event.MOUSEUP);}else if(js.Browse.dom_n==4){doc = div; js.Event.addEvent(div, "mousedown", ech_mousedown); js.Event.addEvent(document.body, "mousemove", ech_mousemove); js.Event.addEvent(document.body, "mouseup", ech_mouseup);}else return null; if(!doc.eventCtrl) doc.eventCtrl = new EventCtrl(div); var ctrl=doc.eventCtrl; ctrl.dragging = false; ctrl.dragged = false; ctrl.startX = 0; ctrl.startY = 0; ctrl.curX = 0; ctrl.curY = 0; ctrl.mousedown = dwnf; if(!movf) movf = function(ctrl){js.Dom.setXY(ctrl.div, ctrl.curX-ctrl.pageW, ctrl.curY-ctrl.pageH);}
 ctrl.mousemove = movf; ctrl.mouseup = upf; ctrl.mouseclick= clkf; ctrl.mask|=2; return ctrl;}
