/*
	Basic document API
*/


// returns object's top-left-coordinates
function position(o,all) {
	var x = o.offsetLeft;
	var y = o.offsetTop;
	while (o.offsetParent && all) {
		o = o.offsetParent;
		x += o.offsetLeft;
		y += o.offsetTop;
	}
	return {x:x, y:y};
}

// returns mouse-position.
function mousePosition(e) {
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) {
		return {x:e.pageX, y:e.pageY};
	} else if (e.clientX || e.clientY) 	{
		return {
			x: e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
			y: e.clientY + document.body.scrollTop + document.documentElement.scrollTop
		}
	}
}


function nodeOrder(o) {
	for (var i=0; i<o.parentNode.childNodes.length;i++) {
		if (o.parentNode.childNodes[i] == o) return i;
	}
	return false;
}

// returns mouse-offset according to object
function mouseOffset(e,obj) {
	if (!e) var e = window.event;
	var doc = position(obj, true);
	var mouse = mousePosition(e);
	
	return {x:mouse.x - doc.x, y:mouse.y - doc.y};
}
