﻿/* x_event.js compiled from X 4.0 with XC 0.27b. Distributed by 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;
}