// js functions for allthemenhavebeards.com
// Waj 02-03/08

var ie = document.all ? true : false;
var mouseX = 0;
var mouseY = 0;

//if(!ie) document.captureEvents(Event.MOUSEMOVE);
//if(window.addEventListener) window.addEventListener('mousemove', getMousePos, true);

document.onmousemove = getMousePos;

//gets mouse x- and y-coords relative to page
function getMousePos(evt)
{
	if(ie)
	{
		mouseX = event.clientX + document.documentElement.scrollLeft; //note "documentElement" instead of "body" since using strict DOCTYPE
		mouseY = event.clientY + document.documentElement.scrollTop;
	}
	else
	{
		mouseX = evt.pageX;
		mouseY = evt.pageY;
	}

	//if there's an external mouse listener function, call it
	if(extMouseMoves) extMouseMoves(evt);
}

//checks whether the mouse truly enters the current object (and any of its children)
function mouseEnters(obj, evt)
{
	//check IE-style event change
	if(typeof evt.fromElement != undefined && evt.fromElement && typeof obj.contains != undefined)
	{
		return !obj.contains(evt.fromElement); //IE
	}
	//check NS-style equivalent
	else if(typeof evt.relatedTarget != undefined && evt.relatedTarget)
	{
		return !contains(obj, evt.relatedTarget);
	}
	//failsafe
	return false;
}

//checks whether the mouse truly leaves the current object (and any of its children)
function mouseLeaves(obj, evt)
{
	//check IE-style event change
	if(typeof evt.toElement != undefined && evt.toElement && typeof obj.contains != undefined)
	{
		return !obj.contains(evt.toElement); //IE
	}
	//check NS-style equivalent
	else if(typeof evt.relatedTarget != undefined && evt.relatedTarget)
	{
		return !contains(obj, evt.relatedTarget);
	}
	//failsafe
	return false;
}

//custom contains method
function contains(container, containee)
{
	while(containee)
	{
		if(container == containee) return true;
		containee = containee.parentNode;
	}
	return false;
}