//~ pcDAmouseEvent.js - handle mouse events for pcDynAPI.
//~ Supports IE 4+, NS 4+ and DOM browsers.
//~ COPYRIGHT PHILIP CHALMERS 2002, ALL RIGHTS RESERVED
//~ Website www.benefit-from-it.co.uk
function pcDAmouseEvent(e){this._suprCl=pcDAevent;this._suprCl(e);}pcDAut.setInheritance(pcDAmouseEvent,pcDAevent);pcDAmouseEvent.prototype._preBble=function(){this.x+=this.src.getX();this.y+=this.src.getY();};pcDAmouseEvent.prototype.cancelBrowserEvent=function(){this.browserReturn=false;if(!document.layers||this.type !="mousedown")return;};pcDAevent._hndlMouse=function(e){var oBI=pcBrowserInfo._o;var oDB=pcDAbase._o;if(oBI._def){if(oBI._ie){var e=window.event;e.cancelBubble=true;}else e.stopPropagation();if(oDB._dragging&&e.type=="click"){oDB._dragging=false;return false;}}var oTD=this._pcDAobj;var fGCD=oDB.getContainerDAobjOf;if(oBI._def)oTD=fGCD((oBI._ie)?e.srcElement:e.target)||oTD;else if(oBI._ns4)oTD=e.target._pcDAobj||oTD;if(!oTD){alert('Error: pcDAmouseEvent could not find target pcDAobj');return false;}var et=e.type;if(oBI._def&&(et=='mouseout'||et=='mouseover')){var rltdT=(oBI._dom)?e.relatedTarget:((et=='mouseout')?e.toElement:e.fromElement);if(oTD.isContainerOf(fGCD(rltdT),true))return true;}var eDA=new pcDAmouseEvent(e.type,oTD);eDA.src=oTD;eDA.browserReturn=true;switch(oBI.modelType){case 'msie':eDA.pageX=e.x+document.body.scrollLeft;eDA.pageY=e.y+document.body.scrollTop;eDA.x=eDA.pageX-eDA.src.getPageX();eDA.y=eDA.pageY-eDA.src.getPageY();break;case 'ns4':case 'w3cdom':if(e.pageX){eDA.pageX=e.pageX;eDA.pageY=e.pageY;}else{eDA.pageX=e.clientX;eDA.pageY=e.clientY;}eDA.x=eDA.pageX-eDA.src.getPageX();eDA.y=eDA.pageY-eDA.src.getPageY();}var b=0;switch(oBI.modelType){case 'msie':b=e.button;break;case 'w3cdom':if(typeof e.button !='undefined')b=[1,4,2][e.button];break;case 'ns4':b=e.which;if(b>8)b-=8;b=[0,1,4,2][b];}eDA.button=b;if(oBI._def){eDA.altKey=(e.altKey||e.altLeft);eDA.ctrlKey=(e.ctrlKey||e.ctrlLeft);eDA.shiftKey=(e.shiftKey||e.shiftLeft);}else if(oBI._ns4){var m=e.modifiers;eDA.altKey=(m==1||m==3||m==5||m==7);eDA.ctrlKey=(m==2||m==3||m==6||m==7);eDA.shiftKey=(m==4||m==5||m==6||m==7);}eDA.nativeTarget=e.target;if(e.type=="mouseover"||e.type=="mouseout"){if(oBI._def){var rltdT=fGCD((oBI._dom)?e.relatedTarget:((et=='mouseout')?e.toElement:e.fromElement));if(rltdT&&rltdT.isContainedBy(oTD.parent,true))eDA.cancelBubble=true;}else if(oBI._ns4&&(e.type=="mouseover"||e.type=="mouseout"))eDA.cancelBubble=true;}if(pcDAbase._o.forceMouseUp&&oBI._def){if(et=='mousedown')pcDAmouseEvent._focus=oTD;else if(et=='mouseup'&&pcDAmouseEvent._focus !=null)eDA.src=oTD=pcDAmouseEvent._focus;}oTD._annceEvt(eDA);if(oBI._ns4){if(oTD._ns4ClkReqd&&et=='mouseup'){eDA.type=et='click';eDA.cancelBubble=false;oTD.announceEvent(eDA);}if(oBI.platform=="other"&&type=="mousedown"){if(oTD._dClkTmr!=null){eDA.type=type="dblclick";eDA.bubble=true;oTD.announceEvent(eDA);}else oTD._dClkTmr=setTimeout(oTD+'._dClkTmr = null',300);}if(e&&e.target.handleEvent&&e.target!=this&&(e.target.handleEvent(e)==false))eDA.browserReturn=false;}else if(e.preventDefault&&!eDA.browserReturn)e.preventDefault();if(!oBI._ie||eDA.browserReturn==false)return eDA.browserReturn;};pcDAevent._ntvHndlr['mousemove']=pcDAevent._ntvHndlr['mouseover']=pcDAevent._ntvHndlr['mouseout']=pcDAevent._ntvHndlr['mousedown']=pcDAevent._ntvHndlr['mouseup']=pcDAevent._ntvHndlr['click']=pcDAevent._ntvHndlr['dblclick']=pcDAevent._hndlMouse;if(pcBrowserInfo._o._ns4){pcDAevent._cptrNS4['mousemove']=function(oT){oT.captureEvents(Event.MOUSEMOVE)};pcDAevent._cptrNS4['mouseover']=function(oT){oT.captureEvents(Event.MOUSEOVER)};pcDAevent._cptrNS4['mouseout']=function(oT){oT.captureEvents(Event.MOUSEOUT)};pcDAevent._cptrNS4['mousedown']=function(oT){oT.captureEvents(Event.MOUSEDOWN)};pcDAevent._cptrNS4['mouseup']=function(oT){oT.captureEvents(Event.MOUSEUP)};pcDAevent._cptrNS4['click']=function(oT){oT.captureEvents(Event.CLICK)};pcDAevent._cptrNS4['dblclick']=function(oT){oT.captureEvents(Event.DBLCLICK)};pcDAevent._rlseNS4['mousemove']=function(oT){oT.releaseEvents(Event.MOUSEMOVE)};pcDAevent._rlseNS4['mouseover']=function(oT){oT.releaseEvents(Event.MOUSEOVER)};pcDAevent._rlseNS4['mouseout']=function(oT){oT.releaseEvents(Event.MOUSEOUT)};pcDAevent._rlseNS4['mousedown']=function(oT){oT.releaseEvents(Event.MOUSEDOWN)};pcDAevent._rlseNS4['mouseup']=function(oT){oT.releaseEvents(Event.MOUSEUP)};pcDAevent._rlseNS4['click']=function(oT){oT.releaseEvents(Event.CLICK)};pcDAevent._rlseNS4['dblclick']=function(oT){oT.releaseEvents(Event.DBLCLICK)};}
