isDOM=document.getElementById; //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
isOpera=isOpera5=window.opera && isDOM; //Opera 5+
isOpera6=isOpera && window.print; //Opera 6+
isOpera7=isOpera && document.readyState; //Opera 7+
isMSIE=document.all && document.all.item && !isOpera; //Microsoft Internet Explorer 4+
isMSIE5=isDOM && isMSIE; //MSIE 5+
isNetscape4=document.layers; //Netscape 4.*
isMozilla=isDOM && navigator.appName=="Netscape"; //Mozilla или Netscape 6.*

mousex = 0;
mousey = 0;
if(isNetscape4) document.captureEvents(Event.MOUSEMOVE);
if(isOpera){
	document.onmousemove=function()
	{
		mousex=event.clientX;
		mousey=event.clientY;
	}
}else if(isNetscape4 || isMozilla){
	document.onmousemove=function(e)
	{
		mousex = e.pageX;
		mousey = e.pageY;
	}	
}

function getMouseXY()
{
	var xy = new Array();
	xy['x']=event.clientX+document.body.scrollLeft;
	xy['y']=event.clientY+document.body.scrollTop;
	return xy;
}

var hideDelay = 100;
var hideDelayTimer = Array();
var beingShown = false;
var shown = false;
var showedPlace = false;
function showPlace(placeName)
{
	if(isMSIE || isOpera7){
		var xy = getMouseXY();
		mousex = xy['x'];
		mousey = xy['y'];
	}
	mousey += 10;
	if(placeName == 'mapPlace')
	{
		mousex -= 240;
		mousey = 40;
	}
	if(placeName == 'loginPlace')
	{
		mousex -= 110;
		mousey = 40;
	}
if(placeName == 'icqPlace')
	{
		mousex = 30;
		mousey = 40;
	}
	if(placeName == 'calendarPlace')
	{
		mousex -= 70;
		mousey = 420;
	}
	if(placeName == 'subscribePlace')
	{
		mousex -= 130;
		mousey = 420;
	}

	if(hideDelayTimer[placeName])
	{
		clearTimeout(hideDelayTimer[placeName]);
		hideDelayTimer[placeName] = false;
	}
	var pn = document.getElementById(placeName);
	pn.style.left = mousex;
	pn.style.top = mousey;
	pn.style.display = '';
	showedPlace = placeName;
	beingShown = true;
}
function hidePlace(placeName)
{
	var pn = document.getElementById(placeName);
	if(showedPlace != false && placeName != showedPlace)
	{
		if(pn) pn.style.display = 'none';
		clearTimeout(hideDelayTimer[placeName]);
		hideDelayTimer[placeName] = false;
		return;
	}
	if(beingShown || shown)
	{
		if(hideDelayTimer[placeName])
		{
			clearTimeout(hideDelayTimer[placeName]);
		}
		hideDelayTimer[placeName] = setTimeout(
			function()
			{
				hidePlace(placeName);
			}, 
			hideDelay);
	}
	else
	{
		if(pn) pn.style.display = 'none';
	}
}