YAHOO.util.Event.addListener(window, 'load', init);

function init() {

	YAHOO.util.Event.addListener(document, 'mousemove', moveEye, {
		el: document.getElementById('oeilG'),
		left: 280,
		top: 100,
		width: 50,
		height: 20
	});

	YAHOO.util.Event.addListener(document, 'mousemove', moveEye, {
		el: document.getElementById('oeilD'),
		left: 430,
		top: 92,
		width: 50,
		height: 22
	});
}


function moveEye(e, eye) {

	var offset = getOffset(eye.el);
	var w = eye.el.offsetWidth / 2, h = eye.el.offsetHeight / 2;
	var dx = YAHOO.util.Event.getPageX(e) - (offset.x + eye.left + eye.width);
	var dy = YAHOO.util.Event.getPageY(e) - (offset.y + eye.top  + eye.height);
	var dx2 = dx * dx, dy2 = dy * dy;
	var mw = eye.width  - w, mh  = eye.height - h;

	var x, y;

	// Si le point est dans l'ellipse
	if(dx2 / (mw * mw) + dy2 / (mh * mh) < 1) {

		x = dx; y = dy;

	} else {

		var hyp = Math.sqrt(dx2 + dy2);
		x = mw * (dx / hyp); y = mh * (dy / hyp);
	}

	eye.el.style.left = x + eye.left + eye.width  - w + 'px';
	eye.el.style.top  = y + eye.top  + eye.height - h + 'px';
}

function getOffset(element)
{
	var e = element.offsetParent, o = {x: 0, y: 0};
	do { o.x += e.offsetLeft; o.y += e.offsetTop; e = e.offsetParent; } while(e != null);
	return o;
}
