
// These variables will hold the current mouse pointer position.

if (flying_object == "bat")
{
	var mouseX = 0;
	var mouseY = 0;

	// Set up event capturing.

	if (isMinNS4) 
		document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = getMousePosition;
}

function getMousePosition(e) 
{
	if (flying_object == "bat")
	{
		// Save cursor position using browser-specific code.

		if (isMinNS4) 
		{
			mouseX = e.pageX;
			mouseY = e.pageY;
		}
		if (isMinIE4) 
		{
			mouseX = event.clientX + document.body.scrollLeft;
			mouseY = event.clientY + document.body.scrollTop;
		}
		return true;
	}
}

// Function to return a random number from a given range.
function random(min, max) 
{
	return Math.random() * (max - min) + min;
}

if (flying_object == "bat")
{
	var bats = new Array();
}

function initBats() 
{
	if (flying_object == "bat")
	{
		var i, j, layer;
		// Get handles to all the bat layers and set orbit parameters.
		i = 0;
		j = 1;
		while ((layer = getLayer("bat" + (i + 1))) != null) {
			bats[i] = layer;

			if (isMinNS4)
				bats[i].image = bats[i].document.images["batimg" + (i + 1)];
			if (isMinIE4)
				bats[i].image = document.images["batimg" + (i + 1)];

			bats[i].a = random(75, 200);
			bats[i].b = random(50, 80);
			bats[i].theta = Math.random() * 2 * Math.PI;
			bats[i].delta = random(4 * Math.PI / 100, 8 * Math.PI / 100);
			if (Math.random() >= 0.5)
				bats[i].delta = -bats[i].delta;
			bats[i].phi = Math.random() * 2 * Math.PI;

			bats[i].imageIndex = j;
			if (++j > 3)
				j = 1;
			moveLayerTo(bats[i], 0, 0);
			showLayer(bats[i]);
			i++;
		}
		updateBats();
	}
}

function updateBats() 
{
	if (flying_object == "bat")
	{
		var i, x1, y1, x2, y2;

		for (i = 0; i < bats.length; i++) 
		{
			bats[i].theta += bats[i].delta;

			if (bats[i].theta > 2 * Math.PI) bats[i].theta -= 2 * Math.PI;
			if (bats[i].theta < 0)	bats[i].theta += 2 * Math.PI;

			x1 = Math.round(bats[i].a * Math.sin(bats[i].theta));
			y1 = Math.round(bats[i].b * Math.cos(bats[i].theta));
			x2 = mouseX + Math.round(x1 * Math.cos(bats[i].phi) + y1 * Math.sin(bats[i].phi));
			y2 = mouseY - Math.round(y1 * Math.cos(bats[i].phi) - x1 * Math.sin(bats[i].phi));

			moveLayerTo(bats[i], x2, y2);
			bats[i].image.src = bat_img_dir + "bat" + bats[i].imageIndex + ".gif";
			if (++bats[i].imageIndex > 3)
			bats[i].imageIndex = 1;
		}

		// Set up next call.
		setTimeout('updateBats()', 75);

		return;
	}
}

