
function getOffsetPositionInElement(absPos,element) {
	var pos=getElementOffsetPosition(element);
	pos.x=absPos.x-pos.x;
	pos.y=absPos.y-pos.y;
	return pos;
}

function containPosition(absPos,element) {
	var pos=getOffsetPositionInElement(absPos,element);
	if (pos.x<0 || pos.x>element.clientWidth) return false;
	if (pos.y<0 || pos.y>element.clientHeight) return false;
	return true;
}

/**
 *
 */
function getElement(element,tagName,properties,containSelf){
	function equalProperties(element) {
		if (!properties) return true;
		for (var i=0;i<properties.length;i++) {
			var prop;
			eval("prop=element."+properties[i].name);
			if (prop!=properties[i].value) return false;
		}
		return true;
	}
	tagName = tagName.toLowerCase();
	if (containSelf!=false)
	   if(element.tagName.toLowerCase()==tagName && equalProperties(element)) return element;
	while(element=element.parentElement){
		if(element.tagName.toLowerCase()==tagName && equalProperties(element)) {
			return element;
		}
	}
	return(null);
}

function getElementOffsetPosition(obj, offsetObj){
	var _offsetObj=(offsetObj)?offsetObj:document.body;
	var x=obj.offsetLeft;
	var y=obj.offsetTop;
	var tmpObj=obj.offsetParent;

	while ((tmpObj!=_offsetObj) && tmpObj){
		x+=tmpObj.offsetLeft+tmpObj.clientLeft-tmpObj.scrollLeft;
		y+=tmpObj.offsetTop+tmpObj.clientTop-tmpObj.scrollTop;
		tmpObj=tmpObj.offsetParent;
	}
	var pos=new Object();
	pos.x=x;
	pos.y=y;
	return pos;
}

function getOffsetPositionInDocument(pos,element) {
	var absPos=getElementOffsetPosition(element);
	absPos.x=absPos.x+pos.x;
	absPos.y=absPos.y+pos.y;

	return absPos;
}

function getMousePostitionInDocument(e) {
	var pos=new Object();
	pos.x=e.x+document.body.scrollLeft;
	pos.y=e.y+document.body.scrollTop;
    return pos;
}
