function addEventListenerX (targetObj, eventName, func) {
	var funcString = 'func(targetObj';
	var k = addEventListenerX.arguments;
	if (k.length > 3) {
		var i;
		for (i=3; i<k.length; i++) {
			if (!isNaN(k[i]) || k[i] == true || k[i] == false) {
				funcString = funcString+', '+k[i];
			} else {
				funcString = funcString+', '+"'"+k[i]+"'";
			}
		}
	}
	funcString = funcString+');';
	if (document.all) {
		// IE
		targetObj.attachEvent(eventName, function() { eval(funcString); });
	} else {
		// Other
		targetObj.addEventListener(eventName.slice(2), function() { eval(funcString); } , false);
	}
}

function init_onload() {
	if(document.all) {
		// IE
		window.onscroll      = evt_onscroll;
		document.onmousemove = init_onmousemove;
		document.onmousedown = init_onmousedown;
	} else {
		// Other
		window.onscroll             = evt_onscroll;
		document.getElementsByTagName('body')[0].addEventListener('DOMMouseScroll', evt_onscroll, false);
		window.document.onmousemove = init_onmousemove;
		window.document.onmousedown = init_onmousedown;
	}
	evt_onload();
}
_xmouse = 0;
_ymouse = 0;
function init_onmousemove(evt) {
	if (document.all) {
		// IE
		_xmouse = event.x + document.body.scrollLeft; 
		_ymouse = event.y + document.body.scrollTop;
	} else {
		// Other
		_xmouse = evt.pageX;
		_ymouse = evt.pageY;
	}
	evt_onmousemove(evt);
}
function init_onmousedown(evt) {
	var buttonCode;
	if(document.all) {
		// IE
		buttonCode = event.button;
	} else {
		// Other
		buttonCode = evt.which;
		switch (buttonCode) {
			case 1:
				buttonCode = 1;
				break;
			case 2:
				buttonCode = 4;
				break;
			case 3:
				buttonCode = 2;
				break;
			default:
				break;
		}
	}
	evt_onmousedown(evt, buttonCode);
}

if(!document.layers) {
	window.onload = init_onload;
}

