//~ pcDAevent.js - base event-handler code for pcDynAPI.
//~ Supports IE 4+, NS 4+ and DOM browsers.
//~ COPYRIGHT PHILIP CHALMERS 2002, ALL RIGHTS RESERVED
//~ Website www.benefit-from-it.co.uk
pcDAevent=function(sType,oTgt){this.type=sType;this.target=oTgt;this.src=oTgt;this.currentOwner=null;this.cancelBubble=false;this.cancelEvent=false;};pcDAevent.prototype._preBble=function(){};pcDAevent._ntvHndlr=[];pcDAevent._ntvHndlr['mousemove']=pcDAevent._ntvHndlr['mouseover']=pcDAevent._ntvHndlr['mouseout']=pcDAevent._ntvHndlr['mousedown']=pcDAevent._ntvHndlr['mouseup']=pcDAevent._ntvHndlr['click']=pcDAevent._ntvHndlr['dblclick']=pcDAevent._ntvHndlr['keydown']=pcDAevent._ntvHndlr['keyup']=pcDAevent._ntvHndlr['keypress']=function(){};if(pcBrowserInfo._o._ns4){pcDAevent._cptrNS4=[];pcDAevent._rlseNS4=[];pcDAevent._cptrNS4['mousemove']=pcDAevent._cptrNS4['mouseover']=pcDAevent._cptrNS4['mouseout']=pcDAevent._cptrNS4['mousedown']=pcDAevent._cptrNS4['mouseup']=pcDAevent._cptrNS4['click']=pcDAevent._cptrNS4['dblclick']=pcDAevent._cptrNS4['keydown']=pcDAevent._cptrNS4['keyup']=pcDAevent._cptrNS4['keypress']=pcDAevent._rlseNS4['mousemove']=pcDAevent._rlseNS4['mouseover']=pcDAevent._rlseNS4['mouseout']=pcDAevent._rlseNS4['mousedown']=pcDAevent._rlseNS4['mouseup']=pcDAevent._rlseNS4['click']=pcDAevent._rlseNS4['dblclick']=pcDAevent._rlseNS4['keydown']=pcDAevent._rlseNS4['keyup']=pcDAevent._rlseNS4['keypress']=function(){};}pcDAobj._lstnsFor=new Array(0);pcDAobj.prototype.addListener=function(sType,fHndlr,oTgt){if(!oTgt)var oTgt=this;this._addLstnr(sType,fHndlr,oTgt);};pcDAobj.prototype.addListenerAny=function(sType,fHndlr){if(!pcDAevent._ntvHndlr[sType])this._addLstnr(sType,fHndlr,pcDAobj);};pcDAobj.prototype.removeListener=function(sType,fHndlr,oTgt){if(!oTgt)var oTgt=this;this._rmvLstnr(sType,fHndlr,oTgt);};pcDAobj.prototype.removeListenerAny=function(sType,fHndlr){this._rmvLstnr(sType,fHndlr,pcDAobj);};pcDAobj.prototype.removeAllListeners=function(){var tl=this._lstnsTo;var aL,i,j,l;for(i=0;i<tl.length;i++){if(tl[i][0]._lstnsFor){aL=tl[i][0]._lstnsFor;l=aL.length;for(j=0;j<l;j++)if(aL[j][1]==this){aL[j]=aL[l-1];aL.pop();l--;}this._chkNtvHndlrs(tl[i][0],tl[i][1]);}}this._lstnsTo=[];};pcDAobj.prototype._addLstnr=function(sType,fHndlr,oTgt){var aL=oTgt._lstnsFor;for(var i=0;i<aL.length;i++)if(aL[i][0]==sType&&aL[i][1]==this&&aL[i][2]==fHndlr)break;if(i==aL.length){aL.push([sType,this,fHndlr]);var tl=this._lstnsTo;for(var j=0;j<tl.length;j++)if(tl[j][0]==oTgt&&tl[j][1]==sType)break;if(j==tl.length)tl.push([oTgt,sType]);var nH=pcDAevent._ntvHndlr[sType];if(nH&&oTgt._tgt){if(pcBrowserInfo._o._ns4)pcDAevent._cptrNS4[sType](oTgt._tgt);oTgt._tgt['on'+sType]=nH;}}};pcDAobj.prototype._rmvLstnr=function(sType,fHndlr,oTgt){var aL=oTgt._lstnsFor;for(var i=0;i<aL.length;i++)if(aL[i][0]==sType&&aL[i][1]==this&&aL[i][2]==fHndlr)aL=pcDAut.removeFromArray(aL,i);this._chkNtvHndlrs(sType,oTgt);};pcDAobj.prototype._chkNtvHndlrs=function(sType,oTgt){var nH=pcDAevent._ntvHndlr[sType];if(oTgt._tgt&&nH){var aL=oTgt._lstnsFor;for(var i=0;i<aL.length;i++)if(aL[i][0]==sType)break;if(i==aL.length){if(pcBrowserInfo._ns4)pcDAevent._rlseNS4[sType](oTgt._tgt);oTgt._tgt['on'+sType]=null;}}};pcDAobj.prototype._exEvtDel=pcDAobj.prototype.del;pcDAobj.prototype.del=function(noevt){this.removeAllListeners();if(this._lstnsFor){var aL=this._lstnsFor;var i,j,lt;for(i=aL.length-1;i>-1;i){aT=aL[i][1]._lstnsTo;for(j=aT.length-1;i>-1;i--)if(aT[j][0]==this)aT=pcDAut.removeFromArray(aT,j);}}this.del(noevt);};pcDAobj.prototype.announceEvent=function(sType){var e=new pcDAevent(sType,this);var args=arguments;var la=args.length;for(var i=1;i<la;i+=2)e[args[i]]=args[i+1];this._annceEvt(e);};pcDAobj.prototype._annceEvt=function(e){this._doLstnr(e);if(!e.cancelEvent)this._doLstnrAny(e);};pcDAobj.prototype._doLstnr=function(e){this._doLstnrGnrl(this,e);if(!e.cancelBubble&&!e.cancelEvent&&this.parent){e.src=this.parent;e._preBble();this.parent._doLstnr(e);}};pcDAobj.prototype._doLstnrAny=function(e){this._doLstnrGnrl(pcDAobj,e);};pcDAobj.prototype._doLstnrGnrl=function(oTgt,e){if(oTgt._lstnsFor){var aL=oTgt._lstnsFor;e.src=this;for(var i=0;i<aL.length&&!e.cancelEvent;i++)if(aL[i][0]==e.type){e.currentOwner=aL[i][1];aL[i][2](e);}}};pcDAobj.prototype._exEvt_Bld=pcDAobj.prototype._build;pcDAobj.prototype._build=function(noevt){this._exEvt_Bld(noevt);if(this._tgt&&this._lstnsFor){var aL=this._lstnsFor;var nH;for(var i=0;i<aL.length;i++){nH=pcDAevent._ntvHndlr[aL[i][0]];if(nh){if(pcBrowserInfo._o._dom)oTgt._tgt.addListener(sType,nH);else this._tgt['on'+sType]=nH;}}}}
