function getObjHeight(obj){
	return obj.offsetHeight;
}

function getObjWidth(obj){
	return obj.offsetWidth;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

var EDGE_TOP_LEFT = 0;
var EDGE_TOP_RIGHT = 1;
var EDGE_BOTTOM_LEFT = 2;
var EDGE_BOTTOM_RIGHT = 3;
function snapEdges(edge1, obj1, edge2, obj2){
	var coord = snapEdges_getEdge(edge2, obj2);

	var height = getObjHeight(obj1);
	var width = getObjWidth(obj1);

	obj1.style.position = "absolute";
	if(edge1 == 0){
		obj1.style.left = coord[0]+"px";
		obj1.style.top = coord[1]+"px";
		return;
	}
	if(edge1 == 1){
		obj1.style.left = (coord[0]+width)+"px";
		obj1.style.top = coord[1]+"px";
		return;
	}
	if(edge1 == 2){
		obj1.style.left = coord[0]+"px";
		obj1.style.top = (coord[1]+height)+"px";
		return;
	}
	if(edge1 == 3){
		obj1.style.left = (coord[0]+width)+"px";
		obj1.style.top = (coord[1]+height)+"px";
		return;
	}
}

function snapEdges_getEdge(edge, obj){
	var height = getObjHeight(obj);
	var width = getObjWidth(obj);
	var x = findPosX(obj);
	var y = findPosY(obj);

	if(edge == 0){
		return Array(x,y);
	}

	if(edge == 1){
		return Array(x+width,y);
	}

	if(edge == 2){
		return Array(x,y+height);
	}

	if(edge == 3){
		return Array(x+width,y+height);
	}
}

function offsetX(obj){
	if(obj.offsetParent)
		return obj.offsetLeft+offsetX(obj.offsetParent);
	else
		return obj.offsetLeft;
}

function offsetY(obj){
	if(obj.offsetParent)
		return obj.offsetTop+offsetY(obj.offsetParent);
	else
		return obj.offsetTop;
}

function scrollOffsetX(obj){
	if(obj == document.body && isNotIE)
		return 0;
	else if(obj && obj.scrollLeft != undefined)
		return parseInt(obj.scrollLeft) + scrollOffsetX(obj.parentNode);
	else
		return 0;
}

function scrollOffsetY(obj){
	//alert(obj+" "+obj.scrollLeft+","+obj.scrollTop+" "+(obj==document.body.parentNode));
	if(obj == document.body && isNotIE)
		return 0;
	else if(obj && obj.scrollTop != undefined)
		return parseInt(obj.scrollTop) + scrollOffsetY(obj.parentNode);
	else
		return 0;
}

