1/******************************************************************************************** 2* BlueShoes Framework; This file is part of the php application framework. 3* NOTE: This code is stripped (obfuscated). To get the clean documented code goto 4* www.blueshoes.org and register for the free open source *DEVELOPER* version or 5* buy the commercial version. 6* 7* In case you've already got the developer version, then this is one of the few 8* packages/classes that is only available to *PAYING* customers. 9* To get it go to www.blueshoes.org and buy a commercial version. 10* 11* @copyright www.blueshoes.org 12* @author Samuel Blume <sam at blueshoes dot org> 13* @author Andrej Arn <andrej at blueshoes dot org> 14*/ 15_grabObj = null;function EventCtrl(div){ 16this.div = div;this.type = ''; this.mask = 0;this.pageX = 0; this.pageY = 0;} 17EventCtrl.prototype.linkCtrl = function(obj){ 18if(obj && !obj.eventCtrl) obj.eventCtrl=this;return this;} 19EventCtrl.prototype.setThreshold = function(threshold){ 20this.threshold = threshold;return this;} 21function getCtrlFromElementIE(el,tagName){ 22for(;el;el=el.parentElement) 23if((tagName==null || el.tagName==tagName) && el.eventCtrl) 24return el.eventCtrl;return null;} 25function getCtrlFromEventIE(e,tagName){ 26var ctrl=_grabObj;var event=window.event;var fromCtrl, toCtrl;if (ctrl==null){ 27var mask=0, type=event.type;switch(type){ 28case 'mouseover': 29fromCtrl = getCtrlFromElementIE(event.fromElement,tagName);toCtrl = getCtrlFromElementIE(event.toElement, tagName);if(fromCtrl!=toCtrl) ctrl=toCtrl;if(!ctrl || (ctrl.mask&1)==0) ctrl=null;break;case 'mouseout': 30fromCtrl = getCtrlFromElementIE(event.fromElement,tagName);toCtrl = getCtrlFromElementIE(event.toElement, tagName);if(fromCtrl!=toCtrl) ctrl=fromCtrl;if(!ctrl || (ctrl.mask&1)==0) ctrl=null;break;case 'mousedown': 31case 'mousemove': 32case 'mouseup': 33ctrl = getCtrlFromElementIE(event.srcElement,tagName);if(ctrl && (ctrl.mask&2)!=0) break;default: ctrl=null; break;} 34} 35if(ctrl){ 36ctrl.pageX = document.body.scrollLeft+event.clientX;ctrl.pageY = document.body.scrollTop +event.clientY;ctrl.type = event.type;} 37return ctrl;} 38function getCtrlFromEventNN4(e,tagName){ 39var ctrl=_grabObj;if(ctrl==null) ctrl=e.target.eventCtrl;if(ctrl){ 40var mask=0;switch(e.type){ 41case 'mouseover': case 'mouseout': 42mask|=1; break;case 'mousedown': case 'mousemove': case 'mouseup': 43mask|=2; break;} 44if((ctrl.mask&mask)!=0){ 45ctrl.pageX = e.pageX; ctrl.pageY = e.pageY;ctrl.type = e.type;} else ctrl=null;} 46return ctrl;} 47function getCtrlFromEventMz(e,tagName){ 48var ctrl=_grabObj;if(ctrl==null){ 49for(var t=e.target; t!=null; t=t.parentNode){ 50if(( tagName==null 51||(t.nodeType==Node.ELEMENT_NODE && t.tagName==tagName)) 52&& ('undefined' != typeof(t.eventCtrl)) ){ 53ctrl=t.eventCtrl;break;} 54} 55} 56if(ctrl){ 57ctrl.pageX = e.clientX+window.scrollX;ctrl.pageY = e.clientY+window.scrollY;ctrl.type = e.type;} 58return ctrl;} 59function getCtrlFromEventNop(e,tagName){ return null; } 60getCtrlFromEvent=(_dom==1||_dom==2)?getCtrlFromEventIE: 61(_dom==3?getCtrlFromEventNN4: 62(_dom==4?getCtrlFromEventMz: 63getCtrlFromEventNop));function ech_mouseover(e){ 64var ctrl = getCtrlFromEvent(e,null);if(ctrl && ctrl.mouseover && !ctrl.mouseoverState){ 65ctrl.mouseoverState = true;if(ctrl.mouseover) ctrl.mouseover(ctrl,ctrl.mouseoverClient);} 66} 67function ech_mouseout(e){ 68var ctrl = getCtrlFromEvent(e,null);if(ctrl && ctrl.mouseover && ctrl.mouseoverState){ 69ctrl.mouseoverState = false;if(ctrl.mouseout) ctrl.mouseout(ctrl,ctrl.mouseoutClient);} 70} 71function ech_mousedown(e){ 72var ctrl = getCtrlFromEvent(e,null);if(ctrl && !ctrl.dragging){ 73_grabObj = ctrl; ctrl.dragging=true; ctrl.dragged = false;ctrl.startX = ctrl.curX = ctrl.pageX;ctrl.startY = ctrl.curY = ctrl.pageY;if(ctrl.mousedown) ctrl.mousedown(ctrl,ctrl.mousedownClient);return false;} 74return true;} 75function ech_mousemove(e){ 76var ctrl = getCtrlFromEvent(e,null);if(ctrl && ctrl.dragging){ 77if(ctrl.curX!=ctrl.pageX || ctrl.curY!=ctrl.pageY){ 78if(Math.abs(ctrl.pageX-ctrl.startX)>ctrl.threshold || Math.abs(ctrl.pageY-ctrl.startY)>ctrl.threshold) 79ctrl.dragged = true;if(ctrl.mousemove) ctrl.mousemove(ctrl,ctrl.mousemoveClient);ctrl.curX = ctrl.pageX; ctrl.curY = ctrl.pageY;} 80return false;} 81return true;} 82function ech_mouseup(e){ 83var ctrl = getCtrlFromEvent(e,null);if(ctrl && ctrl.dragging){ 84_grabObj = null; ctrl.dragging = false;if(ctrl.mouseup) ctrl.mouseup(ctrl,ctrl.mouseupClient);if(!ctrl.dragged && ctrl.mouseclick) 85ctrl.mouseclick(ctrl,ctrl.mouseclickClient);ctrl.curX = ctrl.pageX; ctrl.curY = ctrl.pageY;return false;} 86return true;} 87function ech_attachMouseOverOut(div,ovrf,ovrc,outf,outc){ 88if(!div.eventCtrl) div.eventCtrl = new EventCtrl(div);var ctrl = div.eventCtrl;ctrl.mouseoverState = false;ctrl.mouseover = ovrf; ctrl.mouseoverClient = ovrc;ctrl.mouseout = outf; ctrl.mouseoutClient = outc;div.onmouseover = ech_mouseover;div.onmouseout = ech_mouseout;ctrl.mask|=1;return ctrl;} 89function ech_detachMouseOverOut(div){ 90var ctrl = div.eventCtrl;if(ctrl){ 91ctrl.div.onmouseover = null;ctrl.div.onmouseout = null;ctrl.mask=~1;} 92} 93function ech_attachMouseDrag(div,dwnf,dwnc,movf,movc,upf,upc,clkf,clkc){ 94var doc;if(_dom==1||_dom==2){ 95doc = div;doc.onmousedown = ech_mousedown;document.body.onmousemove = ech_mousemove;document.body.onmouseup = ech_mouseup;} else if(_dom==3){ 96doc = div.document;doc.onmousedown = ech_mousedown;doc.onmousemove = ech_mousemove;doc.onmouseup = ech_mouseup;doc.captureEvents(Event.MOUSEDOWN|Event.MOUSEMOVE|Event.MOUSEUP);} else if(_dom==4){ 97doc = div;div.onmousedown = ech_mousedown;document.body.onmousemove = ech_mousemove;document.body.onmouseup = 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; ctrl.mousedownClient = dwnc;ctrl.mousemove = movf; ctrl.mousemoveClient = movc;ctrl.mouseup = upf; ctrl.mouseupClient = upc;ctrl.mouseclick= clkf; ctrl.mouseclickClient= clkc;ctrl.threshold = 5;ctrl.mask|=2;return ctrl;} 98function ech_detachMouseDrag(div){ 99var ctrl = null;if(_dom==1||_dom==2){ 100ctrl=div.eventCtrl;if(ctrl) ctrl.div.onmousedown=null;} else if(_dom==3){ 101ctrl = div.document.eventCtrl;if(ctrl){ 102var doc = ctrl.div.document;doc.releaseEvents(Event.MOUSEDOWN|Event.MOUSEMOVE|Event.MOUSEUP);doc.onmousedown = null;doc.onmousemove = null;doc.onmouseup = null;} 103} else if(_dom==4){ 104ctrl = div.eventCtrl;if(ctrl) ctrl.div.onmousedown=null;} 105if(ctrl) ctrl.mask&=~2;} 106