/*
'VDW_BUTTON_NO'                 =0 : Default. No button is pressed. 
'VDW_BUTTON_LEFT'               =1 : Left button is pressed. 
'VDW_BUTTON_RIGHT'              =2 : Right button is pressed. 
'VDW_BUTTON_LEFT_RIGHT'         =3 : Left and right buttons are both pressed. 
'VDW_BUTTON_MIDDLE'             =4 : Middle button is pressed. 
'VDW_BUTTON_LEFT_MIDDLE'        =5 : left and middle buttons both are pressed. 
'VDW_BUTTON_RIGHT_MIDDLE'       =6 : Right and middle buttons are both pressed. 
'VDW_BUTTON_LEFT_RIGHT_MIDDLE'  =7 : All three buttons are pressed. 
*/   

   
function vdwevent(evt)
{
   this._browser = new browser();
   this._vdw_button_pressed = (this._browser.isGecko()) ? new VDWEnum('VDW_BUTTON_LEFT','VDW_BUTTON_MIDDLE','VDW_BUTTON_RIGHT') : ((this._browser.isOpera()) ? new VDWEnum('VDW_BUTTON_NO','VDW_BUTTON_LEFT','VDW_BUTTON_RIGHT','VDW_BUTTON_MIDDLE') : (new VDWEnum('VDW_BUTTON_NO','VDW_BUTTON_LEFT','VDW_BUTTON_RIGHT','VDW_BUTTON_LEFT_RIGHT','VDW_BUTTON_MIDDLE','VDW_BUTTON_LEFT_MIDDLE','VDW_BUTTON_RIGHT_MIDDLE','VDW_BUTTON_LEFT_RIGHT_MIDDLE')));

   this._typeName = "vdwevent";
}

vdwevent.prototype.getEvent = function (evt)
{
   if(this._browser.isIEWin())
   {
      return window.event;
   }
   else
   {
      return evt;
   }
}

vdwevent.prototype.stopPropagation = function (evt)
{
   if(this._browser.isIEWin())
   {
      this.getEvent(evt).cancelBubble = true;
   }
   else
   {
      this.getEvent(evt).stopPropagation();
   }
}

vdwevent.prototype.preventDefault = function (evt)
{
   if(this._browser.isIEWin())
   {
      this.getEvent(evt).returnValue = true;
   }
   else
   {
      this.getEvent(evt).preventDefault();
   }
}

vdwevent.prototype.offsetX = function (evt)
{
   if(this._browser.isIEWin())
   {
      return this.getEvent(evt).offsetX;
   }
   else
   {
      var e = this.getEvent(evt);
      /*if(e.target && e.target.style && (e.target.style.position!='fixed' || e.target.style.position!='static'))
         alert(e.pageX+" - "+e.layerX+" = "+(e.pageX-e.layerX));*/
      return e.layerX  ;    
   }
}

vdwevent.prototype.offsetY = function (evt)
{
   if(this._browser.isIEWin())
   {
      return this.getEvent(evt).offsetY;
   }
   else
   {
      var e = this.getEvent(evt);
      /* if(e.target && e.target.style && (e.target.style.position!='fixed' || e.target.style.position!='static'))
         alert(this.getEvent(evt).layerY);*/
      return e.layerY;     
   }
}

vdwevent.prototype.clientY = function (evt)
{
   return this.getEvent(evt).clientY;     
}

vdwevent.prototype.clientX = function (evt)
{
   return this.getEvent(evt).clientX;
}


vdwevent.prototype.srcElement = function (evt)
{
   if(this._browser.isIEWin())
   {
      return this.getEvent(evt).srcElement;
   }
   else
   {
      // but in Mozilla the nodes of type text can also fire events, so to keep things working 
      // you'll need to climb up the tree until you find a element's (tag's) node
      var node = this.getEvent(evt).target;
      while(node.nodeType != node.ELEMENT_NODE)
      {
   	   node = node.parentNode;
      }
      return node; 
   }
}
vdwevent.prototype.keyCode = function (evt)
{
   var event = this.getEvent(evt);
   return (event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode ? event.charCode : 0)); 
}

vdwevent.prototype.relatedTarget = function (evt)
{
   if(this._browser.isIEWin())
   {
      event = this.getEvent(evt);      
      if(event.type == 'onmouseout')
      {
         return event.toElement;
      }
      else
      if(event.type == 'onmouseover')
      {
         return event.fromElement;
      }
   }
   else
   {
      return this.getEvent(evt).relatedTarget; 
   }
}

vdwevent.prototype.button = function(evt)
{
   return ((this.getEvent(evt).button)?this.getEvent(evt).button:((this.getEvent(evt).which)?this.getEvent(evt).which:0));
}

vdwevent.prototype.IsButtonPressed = function(evt,sButtonName)
{
   return ((this._vdw_button_pressed.toString(this.button(evt))==sButtonName)?true:false);
}
