window.onerror = null;

var tooltip_attr_name = "tooltip";
var tooltip_blank_text = "(откроется в новом окне)";
var tooltip_newline_entity = "  ";
var tooltip_max_width = "400";

addEvent(window, 'load', cr_tt_div);
function cr_tt_div()
{
	if ( document.createElement )
		tooltip.d();
}

tooltip = {
// class start

tipDiv: document.createElement("DIV"),
c: null,
g: false,

move: function(e)
{
	if (tooltip.g)
	{
		try{
			oCanvas = document.getElementsByTagName((document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY")[0];
			x = window.event ? event.clientX + oCanvas.scrollLeft : e.pageX;
			y = window.event ? event.clientY + oCanvas.scrollTop : e.pageY;
			tooltip.a(x, y);
		}catch(e){}
	}
},

d: function()
{
	tooltip.tipDiv.setAttribute("id", "tooltip");
	tooltip.tipDiv.style.filter = "alpha(opacity=90)"; // buggy in ie5.0

	document.body.appendChild(tooltip.tipDiv);
	var els = Array(
		document.getElementsByTagName("img"),
		document.getElementsByTagName("a"),
		document.getElementsByTagName("b"),
		document.getElementsByTagName("span"),
		document.getElementsByTagName("font"),
		document.getElementsByTagName("input"),
		document.getElementsByTagName("select"),
		document.getElementsByTagName("td")
	);

	var tooltip_title;
	var tooltip_alt;
	var tooltip_blank;

	var elsLength = els.length;
	var a;
	for ( var k = 0 ; k < elsLength ; k++ )
	{
		a = els[k];
		aLength = a.length;
		for( var i = 0 ; i < aLength ; i++ )
		{
			tooltip_title = a[i].getAttribute("ttitle");
			tooltip_blank = a[i].getAttribute("target") && a[i].getAttribute("target") == "_blank" && tooltip_blank_text;

			if(tooltip_title || tooltip_blank)
			{
				a[i].setAttribute(tooltip_attr_name, tooltip_blank ? (tooltip_title ? tooltip_title + "<br>" + tooltip_blank_text : tooltip_blank_text) : tooltip_title);
				if (a[i].getAttribute(tooltip_attr_name))
				{
					a[i].removeAttribute("ttitle");

					addEvent(a[i], "mouseover", tooltip.show);
					addEvent(a[i], "mouseout", tooltip.hide);
				}
			}
		}
	}

	document.onmousemove = tooltip.move;
	window.onscroll = tooltip.hide;
//	addEvent(document, 'mousemove', tooltip.move);
//	addEvent(window, 'scroll', tooltip.hide);
},

show: function(e)
{
	d = window.event ? window.event.srcElement : e.currentTarget;
	if (!d.getAttribute(tooltip_attr_name)) return;
	if (tooltip.tipDiv.firstChild) tooltip.tipDiv.removeChild(tooltip.tipDiv.firstChild);
	tooltip.tipDiv.appendChild(document.createTextNode(d.getAttribute(tooltip_attr_name)));

	r = d.getAttribute(tooltip_attr_name);
//	re = /  /ig;
	tooltip.tipDiv.innerHTML = r.replace(tooltip_newline_entity, "<br />");

	tooltip.move();
	tooltip.g = true;
	tooltip.c = setTimeout("tooltip.tipDiv.style.visibility = 'visible';", 10);
},

hide: function(e)
{
	tooltip.tipDiv.style.visibility = "hidden";
	if (!tooltip_newline_entity && tooltip.tipDiv.firstChild) tooltip.tipDiv.removeChild(tooltip.tipDiv.firstChild);
	clearTimeout(tooltip.c);
	tooltip.g = false;
	tooltip.a(-99, -99);
},

a: function(x, y)
{
	oCanvas = document.getElementsByTagName((document.compatMode && document.compatMode == "CSS1Compat") ? "HTML" : "BODY")[0];

	w_width = window.innerWidth ? window.innerWidth + window.pageXOffset : oCanvas.clientWidth + oCanvas.scrollLeft;
	w_height = window.innerHeight ? window.innerHeight + window.pageYOffset : oCanvas.clientHeight + oCanvas.scrollTop;

	tooltip.tipDiv.style.width = "auto";

	t_width = window.event ? tooltip.tipDiv.clientWidth : tooltip.tipDiv.offsetWidth;
	t_height = window.event ? tooltip.tipDiv.clientHeight : tooltip.tipDiv.offsetHeight;

	if (t_width > tooltip_max_width)
	{
		tooltip.tipDiv.style.width = tooltip_max_width;
		t_width = window.event ? tooltip.tipDiv.clientWidth : tooltip.tipDiv.offsetWidth;
	}

	t_extra_width = 6; // CSS padding + borderWidth;
	t_extra_height = 6; // CSS padding + borderWidth;

	tooltip.tipDiv.style.left = x + 8;
	tooltip.tipDiv.style.top = y + 18;

	while(x > w_width - t_width - (t_extra_width * 2))
	{
		x--;
		tooltip.tipDiv.style.left = w_width - t_width - t_extra_width + 3;
		t_width = window.event ? tooltip.tipDiv.clientWidth : tooltip.tipDiv.offsetWidth;
	}

	while(y > w_height - t_height - (t_extra_height * 2))
	{
		y--;
		tooltip.tipDiv.style.top = w_height - t_height - t_extra_height + 3;
		t_height = window.event ? tooltip.tipDiv.clientHeight : tooltip.tipDiv.offsetHeight;
	}
}

// class end
};

