// detect collisions between drop down menu and <select> forms elements
// IE floats <select> elements to the top of the z-index thereby interfereing
// with our drop downs.  Adapted from nav_small.js

function detectCollisions(el,in_recover) 
{
	var f = null;
	if (typeof(g_cartFrameId) != 'undefined')
		f = document.getElementById(g_cartFrameId);
	if ((menusOff==1) && (f==null)) return;
	selectElements = document.getElementsByTagName('select');
	// if in recover show all selects
	if (in_recover)
	{
		for (i = 0; i < selectElements.length; i++) 
		{
			var thisSelect = selectElements[i];
			thisSelect.style.visibility = 'visible';
		}
	}
	else 
	{
		var offsets = getOffsets(el);
		// loop through each form select element and find collision with layer
		for (i = 0; i < selectElements.length; i++) 
		{
			var thisSelect = selectElements[i];
			var selectOffsets = getOffsets(selectElements[i]); 
		
			if (
				(offsets['right'] < selectOffsets['left']) ||
				(offsets['left'] > selectOffsets['right']) ||
				(offsets['bottom'] < selectOffsets['top']) ||
				(offsets['top'] > selectOffsets['bottom'])
			)
			{
			}
			else 
			{
				thisSelect.style.visibility = 'hidden';
			}
		}
	}
}
	

// location position of elements
function getOffsets(in_object)
{
	var originalObject = in_object;
	var originalWidth = in_object.offsetWidth;
	var originalHeight = in_object.offsetHeight;
	var offsetLeft = 0;
	var offsetTop = 0;
	
	while (in_object)
	{
		offsetLeft += in_object.offsetLeft;
		offsetTop += in_object.offsetTop;
		in_object = in_object.offsetParent;
	}

	var offsets = new Array();
	offsets['left'] = offsetLeft;
	offsets['top'] = offsetTop;
	offsets['right'] = offsetLeft + originalWidth;
	offsets['bottom'] = offsetTop + originalHeight;

	return offsets;
}
