/* x_event.js compiled from X 4.0 with XC 0.28b. Distributed under GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com */
   
  function xAddEventListener (e, eT, eL, cap)
{
  if (!(e = xGetElementById (e)))
    return;
  eT = eT.toLowerCase ();
  if ((!xIE4Up && !xOp7Up) && e == window)
    {
      if (eT == 'resize')
	{
	  window.xPCW = xClientWidth ();
	  window.xPCH = xClientHeight ();
	  window.xREL = eL;
	  xResizeEvent ();
	  return;
	}
      if (eT == 'scroll')
	{
	  window.xPSL = xScrollLeft ();
	  window.xPST = xScrollTop ();
	  window.xSEL = eL;
	  xScrollEvent ();
	  return;
	}
    }
  var eh = 'e.on' + eT + '=eL';
  if (e.addEventListener)
    e.addEventListener (eT, eL, cap);
  else if (e.attachEvent)
    e.attachEvent ('on' + eT, eL);
  else
    eval (eh);
}

function
xResizeEvent ()
{
  if (window.xREL)
    setTimeout ('xResizeEvent()', 250);
  var cw = xClientWidth (), ch = xClientHeight ();
  if (window.xPCW != cw || window.xPCH != ch)
    {
      window.xPCW = cw;
      window.xPCH = ch;
      if (window.xREL)
	window.xREL ();
    }
}
function
xScrollEvent ()
{
  if (window.xSEL)
    setTimeout ('xScrollEvent()', 250);
  var sl = xScrollLeft (), st = xScrollTop ();
  if (window.xPSL != sl || window.xPST != st)
    {
      window.xPSL = sl;
      window.xPST = st;
      if (window.xSEL)
	window.xSEL ();
    }
}
function
xEvent (evt)
{
  var e = evt || window.event;
  if (!e)
    return;
  if (e.type)
    this.type = e.type;
  if (e.target)
    this.target = e.target;
  else if (e.srcElement)
    this.target = e.srcElement;
  if (e.relatedTarget)
    this.relatedTarget = e.relatedTarget;
  else if (e.type == 'mouseover' && e.fromElement)
    this.relatedTarget = e.fromElement;
  else if (e.type == 'mouseout')
    this.relatedTarget = e.toElement;
  if (xOp6Dn)
    {
      this.pageX = e.clientX;
      this.pageY = e.clientY;
    }
  else if (xDef (e.pageX, e.pageY))
    {
      this.pageX = e.pageX;
      this.pageY = e.pageY;
    }
  else if (xDef (e.clientX, e.clientY))
    {
      this.pageX = e.clientX + xScrollLeft ();
      this.pageY = e.clientY + xScrollTop ();
    }
  if (xDef (e.offsetX, e.offsetY))
    {
      this.offsetX = e.offsetX;
      this.offsetY = e.offsetY;
    }
  else if (xDef (e.layerX, e.layerY))
    {
      this.offsetX = e.layerX;
      this.offsetY = e.layerY;
    }
  else
    {
      this.offsetX = this.pageX - xPageX (this.target);
      this.offsetY = this.pageY - xPageY (this.target);
    }
  if (e.keyCode)
    {
      this.keyCode = e.keyCode;
    }
  else if (xDef (e.which) && e.type.indexOf ('key') != -1)
    {
      this.keyCode = e.which;
    }
  this.shiftKey = e.shiftKey;
  this.ctrlKey = e.ctrlKey;
  this.altKey = e.altKey;
}

function
xPreventDefault (e)
{
  if (e && e.preventDefault)
    e.preventDefault ();
  else if (window.event)
    window.event.returnValue = false;
}

function
xRemoveEventListener (e, eT, eL, cap)
{
  if (!(e = xGetElementById (e)))
    return;
  eT = eT.toLowerCase ();
  if ((!xIE4Up && !xOp7Up) && e == window)
    {
      if (eT == 'resize')
	{
	  window.xREL = null;
	  return;
	}
      if (eT == 'scroll')
	{
	  window.xSEL = null;
	  return;
	}
    }
  var eh = 'e.on' + eT + '=null';
  if (e.removeEventListener)
    e.removeEventListener (eT, eL, cap);
  else if (e.detachEvent)
    e.detachEvent ('on' + eT, eL);
  else
    eval (eh);
}

function
xStopPropagation (evt)
{
  if (evt && evt.stopPropagation)
    evt.stopPropagation ();
  else if (window.event)
    window.event.cancelBubble = true;
}
