var lastChildImage = "";
var loaded = true;


function getAbsX(elm) {
	return parseInt(elm.x) ? elm.x : getAbsPos(elm, "Left");
}

function getAbsY(elm) {
	return parseInt(elm.y) ? elm.y : getAbsPos(elm, "Top");
}

function getAbsPos(elm, which) {
	pos = 0;

	while (elm != null) {
		pos += elm["offset" + which];
		elm = elm.offsetParent;
	}

	return pos;
}

function getAngle(elm, x, y) {
	var angle = 0;
	x = x-getAbsX(elm);
	y = y-getAbsY(elm);

	if (x >= 0 && y <=0) angle = Math.atan(x/(0-y)) / (Math.PI / 180);
	else if (x >= 0 && y >= 0) angle = 90 + (Math.atan(y/x) / (Math.PI / 180));
	else if (x <= 0 && y >= 0) angle = 180 + (Math.atan((0-x)/y) / (Math.PI / 180));
	else angle = 270 + (Math.atan((0-y)/(0-x)) / (Math.PI / 180));

	return angle;
}

function getDistance(elm, x, y) {
	x = Math.abs(getAbsX(elm)-x);
	y = Math.abs(getAbsY(elm)-y);

	return Math.round(Math.sqrt(x*x+y*y));
}

function setImage(obj, str){
	if(window.child && window.document[obj]) window.document[obj].SetVariable("image", str);
	else if(document.child) document[obj].SetVariable("image", str);
}

function updateElement( x,y, elmName, lastImg ) {
	var elm = document.getElementById(elmName);
	var img;
	try {
		x -= (elm.offsetWidth / 2);
		y -= (elm.offsetHeight / 2);
	}
	catch (err) {
		return "";
	}

	var distance = getDistance(elm, x, y);
	if (distance < 50) {
		setImage(elmName, "straight");
		img = "straight";
	} else {
		var angle = getAngle(elm, x, y);
		if ((angle >= 338 && angle < 360) || (angle >= 0 && angle < 23)) img = "up";
		if (angle >= 23 && angle < 68) img = "topright";
		if (angle >= 68 && angle < 113) img = "right";
		if (angle >= 113 && angle < 158) img = "bottomright";
		if (angle >= 158 && angle < 203) img = "down";
		if (angle >= 203 && angle < 248) img = "bottomleft";
		if (angle >= 248 && angle < 293) img = "left";
		if (angle >= 293 && angle < 338) img = "topleft";
		if (img != lastImg) setImage(elmName, img);
	}
	return img;
}


function handleMouseMove(e) {
	if(!loaded) return;
	x = window.event ? (window.event.x + document.body.scrollLeft) : e.pageX;
	y = window.event ? (window.event.y + document.body.scrollTop) : e.pageY;

	lastChildImage = updateElement(x,y, "child", lastChildImage);
}

function childClicked( id ) {
	// No action
}

document.onmousemove = handleMouseMove;
