function stopEvent(ev) {
	if (!ev) var ev = window.event;
	ev.cancelBubble = true
	if (ev.stopPropagation)
		ev.stopPropagation();
}

function getElem (id) {
	if ( typeof id == 'object' )
		return id;

	return document.getElementById(id);
}

function removeClass(elem, remClass) {
	elem = getElem(elem);
	if ( !elem || !elem.className )
		return;
	remClass = new RegExp('(^| )'+remClass, 'g');

	elem.className = elem.className.replace(remClass,'');
}

function getTarget(e) {
	if ( window.event )
		e = window.event;
	var elem = (e.srcElement||e.target);
	return elem;
}

function addClass(elem, addClass) {
	elem = getElem(elem);
	if ( !elem || elem.className === null )
		return;

	elem.className = addClass+' '+elem.className;
}

function getAbsPos (elem) {
	elem = getElem(elem);
	if ( !elem || !elem.className )
		return;
//	var pos = { top: elem.offsetTop, left: elem.offsetLeft, width: elem.offsetWidth, height: elem.offsetHeight };
	var pos = { top: 0, left: 0, width: elem.offsetWidth, height: elem.offsetHeight };

	while ( elem = elem.offsetParent ) {
		if ( elem.tagName.toUpperCase() == 'BODY' || !elem.offsetParent ) break;
		if ( typeof elem.offsetLeft != 'number') continue;
		if ( typeof elem.tagName.toUpperCase() == 'form') continue;
		pos.top += elem.offsetTop - elem.scrollTop;
		pos.left += elem.offsetLeft - elem.scrollLeft;
	}

	return pos;
}

function DEBUG (text) {
	if ( ! document.getElementById('DEBUG') ) return;
	document.getElementById('DEBUG').innerHTML=(new Date()).getTime()+': '+text + "<br><hr>" + document.getElementById('DEBUG').innerHTML;

	getElem('DEBUGBUG').style.backgroundColor = 'red';
	setTimeout("getElem('DEBUGBUG').style.backgroundColor = 'white';", 1000);
}

