function clBrowser() {
	var ua, s, i;

	this.isIE    = false;  // Internet Explorer
	this.isNS    = false;  // Netscape
	this.isFF    = false;  // FireFox
	this.version = null;

	ua = navigator.userAgent;


	s = "MSIE";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isIE = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}

	s = "Netscape6/";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}

	s = "Firefox/";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.isFF = true;
		this.version = ua.substr(i + s.length);
		return;
	}

	// Treat any other "Gecko" browser as NS 6.1.
	s = "Gecko";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.version = 6.1;
		return;
	}
}

function add_EventListener(source, type, listener){
	if(browser.isIE) {
		return source.attachEvent('on'+type, listener);
	}
	else {
		return source.addEventListener(type, listener, true);
	}
}

function remove_EventListener(source, type, listener){
	if(browser.isIE) {
		source.detachEvent('on'+type, listener);
	}
	else {
		source.removeEventListener(type, listener, true);
	}
}

function event_DOMnify(e) {
	if (!e && window.event) {
		e = window.event;
	}

	if (!e.target && e.srcElement) {
		e.target = e.srcElement;
		e.originalTarget = e.srcElement;
	}

	if(typeof(e.pageX) == "undefined") {
		var root = document.documentElement || document.body;
		e.pageX = event.clientX - root.scrollLeft;
	}
	if(typeof(e.pageY) == "undefined") {
		var root = document.documentElement || document.body;
		e.pageY = event.clientY - root.scrollTop;
	}
	if(typeof(e.which) == "undefined" && typeof(e.keyCode) != "undefined") {e.which = e.keyCode;}
	if(typeof(e.layerX) == "undefined" && typeof(e.offsetX) != "undefined") {e.layerX = e.offsetX;}
	if(typeof(e.layerY) == "undefined" && typeof(e.offsetY) != "undefined") {e.layerY = e.offsetY;}

	if (!e.preventDefault) {e.preventDefault = function(){this.returnValue = false;};}
	if (!e.stopPropagation) {e.stopPropagation = function(){this.cancelBubble = true;};}

	return e;
}

var browser = new clBrowser();
