
/*============================================================================*\
** Name      : Bibliothèque DHTML -- simple_event.js                          **
** Author    : Luc Thibault <zebulon.mail@wanadoo.fr>                         **
** Copyright : 2002 - Luc Thibault - AZTEK STUDIO.                            **
\*============================================================================*/

useEvents = true;

function dynEventObject(){
	this.init = evtInit
	this.stopPropagation = evtStopPropagation
	this.preventDefault = evtPreventDefault

	this.type = ""
	this.target = null
	this.AT_TARGET = 1
	this.BUBBLING_PHASE = 2
	this.CAPTURING_PHASE = 3
	this.clientX = 0
	this.clientY = 0
	this.offsetX = 0
	this.offsetY = 0
}

function evtStopPropagation(){return}

function evtPreventDefault(){return}

function evtInit(e){
	testEvent.type = (is.ie) ? window.event.type : e.type;
	testEvent.target = (is.ie) ? window.event.srcElement : e.target;
	testEvent.clientX = (is.ns5) ? e.clientX : (is.ie) ? window.event.clientX : (is.ns4) ? e.pageX - OffsetX() : (is.opera) ? e.clientX - OffsetX() : null;
	testEvent.clientY = (is.ns5) ? e.clientY : (is.ie) ? window.event.clientY : (is.ns4) ? e.pageY - OffsetY() : (is.opera) ? e.clientY - OffsetY() : null;
	testEvent.offsetX = (is.ie) ? window.event.offsetX : (is.ns) ? e.layerX : '';
	testEvent.offsetY = (is.ie) ? window.event.offsetY : (is.ns) ? e.layerY : '';
}

function evtAddListener(type, listener, capture){evtAdd(this.elm, type, listener, capture);}
function evtAddWindowListener(type, listener, capture){evtAdd(window, type, listener, capture);}
function evtAddDocumentListener(type, listener, capture){evtAdd(document, type, listener, capture);}

function evtAdd(obj, type, listener, capture){
	eh = 'obj.on' + type.toString().toLowerCase() + '=' + listener;
	uType = type.toString().toUpperCase();
	if (!capture) capture = false;

	if (is.ns4 || is.opera) {
		if (uType == 'SCROLL') {
			window.cbeOldScrollTop = OffsetY();
			window.cbeOnScrollListener = listener;
			cbeOnScrollEvent();
			return;
		} else if (uType == 'RESIZE') {
			window.cbeOldWidth = getInnerWidth();
			window.cbeOldHeight = getInnerHeight();
			window.cbeOnResizeListener = listener;
			cbeOnResizeEvent();
			return;
		}
	}
	if (is.dom2events) {obj.addEventListener(type, listener, capture);}
	else if (obj.captureEvents) {
		if (capture) obj.captureEvents(eval("Event." + uType));
		eval(eh);
	}
	else {eval(eh);}
}

function evtRemoveListener(type, listener, capture){evtRemove(this.doc, type, listener, capture);}
function evtRemoveWindowListener(type, listener, capture){evtRemove(window, type, listener, capture);}
function evtRemoveDocumentListener(type, listener, capture){evtRemove(document, type, listener, capture);}

function evtRemove(obj, type, listener, capture){
	eh = "obj.on" + type.toString().toLowerCase() + "=null";
	uType = type.toString().toUpperCase();
	if (!capture) capture = false;

	if (is.ns || is.opera) {
		if (uType == 'SCROLL') {
			window.cbeOnScrollListener = null;
			return;
		} else if (uType == 'RESIZE') {
			window.cbeOnResizeListener = null;
			return;
		}
	}
	if (is.dom2events) {obj.removeEventListener(type, listener, capture);}
	else if (obj.releaseEvents) {
		if (capture) obj.releaseEvents(eval("Event." + uType));
		eval(eh);
	}
	else {eval(eh);}
}

function cbeOnScrollEvent(){
	if (!window.cbeOnScrollListener) {return}
	if (cbePageYOffset() != window.cbeOldScrollTop) {
		window.cbeOnScrollListener();
		window.cbeOldScrollTop = cbePageYOffset();
	}
	setTimeout("cbeOnScrollEvent()", 250);
}
function cbeOnResizeEvent(){
	if (!window.cbeOnResizeListener) {return}
	if (getInnerWidth() != window.cbeOldWidth || getInnerHeight() != window.cbeOldHeight) {
		window.cbeOnResizeListener();
		window.cbeOldWidth = cbeInnerWidth();
		window.cbeOldHeight = cbeInnerHeight();
	}
	setTimeout("cbeOnResizeEvent()", 250);
}
function cbeDefaultOnResizeListener(){
	if (is.opera) location.replace(location.href);
	else history.go(0);
}

