var node_opacity = {};
var node_st = {};

window.onerror = function(msg, url, linenumber) {
	// alert(msg + "--" + url + "--" + linenumber);
};

function show_node(node_id) {
	try {
		var block = $(node_id);
		block.style.display = 'block';

		var x = window.pageXOffset;
		var y = window.pageYOffset;

		if (navigator.appVersion.indexOf('MSIE') != -1) {
			op = getPageEventCoords(block);
			x = op.left;
			y = op.top;
		}

		if (navigator.appVersion.indexOf('MSIE') != -1)
			block.style.top = (y + 20) + "px";
		else
			block.style.top = (y + 20) + "px";

		block.style.left = "140px";

		if (node_id.slice(0, 17) == 'send_message__new') {
			window.scrollTo(x, y + 120);
			if (window.document.URL.indexOf("message_contacts") != -1)
				block.style.left = "140px";

		} else if (window.document.URL.indexOf("message_contacts_new") != -1) {
			window.scrollTo(x, y + 120);
			block.style.left = "450px";
			if (navigator.appVersion.indexOf('MSIE') != -1)
				block.style.top = (y + 200) + "px";
			
			if (node_id.slice(0, 9) == 'kiss_cont') {
				block.style.left = "350px";
				block.style.top = "120px";
				block.style.position = "absolute";
			}
			
			if (node_id.slice(0, 19) == 'send_message__reply') {
				block.style.left = "35%";
				block.style.top = "200px";
				block.style.position = "absolute";
			}

		} else {
			window.scrollTo(x, y + 80);
			if (window.document.URL.indexOf("message_contacts") != -1){
				if (navigator.appVersion.indexOf('MSIE') != -1)
					block.style.top = y + "px";
				else
					block.style.top = (y - 60) + "px";
			}
			
			if (node_id.slice(0, 9) == 'kiss_cont') {
				block.style.top  = (y - 100) + "px";
				block.style.left = x + "px";
			}
		}

		node_opacity[node_id] = 0;

		if (navigator.appVersion.indexOf('MSIE') != -1)
			ie_show_div(node_id);
		else
			moz_show_div(node_id);

	} catch (e) {
		// alert(e.message);
	}
}

function ie_show_div(node_id) {
	var block = $(node_id);

	clearTimeout(node_st[node_id]);

	if (node_opacity[node_id] < 100) {
		node_st[node_id] = setTimeout('ie_show_div(\'' + node_id + '\')', 10);

		node_opacity[node_id] += 30;

		block.style.filter = 'alpha(opacity=' + node_opacity[node_id] + ')';
	} else
		block.style.filter = 'alpha(opacity=100)';
}

function moz_show_div(node_id) {
	var block = $(node_id);

	clearTimeout(node_st[node_id]);

	if (node_opacity[node_id] < 1) {
		node_st[node_id] = setTimeout('moz_show_div(\'' + node_id + '\')', 30);

		node_opacity[node_id] += 0.1;

		block.style.opacity = node_opacity[node_id];
	} else
		block.style.opacity = '1';
}

function hide_node(node_id) {
	if (navigator.appVersion.indexOf('MSIE') != -1)
		ie_hide_node(node_id);
	else
		moz_hide_node(node_id);
}

function moz_hide_node(node_id) {
	var block = $(node_id);

	clearTimeout(node_st[node_id]);

	if (node_opacity[node_id] > 0) {
		node_st[node_id] = setTimeout('moz_hide_node(\'' + node_id + '\')', 30);

		node_opacity[node_id] -= 0.1;

		block.style.opacity = node_opacity[node_id];
	} else {
		block.style.opacity = '0';
		block.style.display = 'none';
	}
}

function ie_hide_node(node_id) {
	var block = $(node_id);

	clearTimeout(node_st[node_id]);

	if (node_opacity[node_id] > 0) {
		node_st[node_id] = setTimeout('ie_hide_node(\'' + node_id + '\')', 10);

		node_opacity[node_id] -= 30;

		block.style.filter = 'alpha(opacity=' + node_opacity[node_id] + ')';
	} else {
		block.style.filter = 'alpha(opacity=0)';
		block.style.display = 'none';
	}
}

function getPageEventCoords(evt) {
	var coords = {
		left : 0,
		top : 0
	};
	if (evt.pageX) {
		coords.left = evt.pageX;
		coords.top = evt.pageY;
	} else if (evt.clientX) {
		coords.left = evt.clientX + document.body.scrollLeft
				- document.body.clientLeft;
		coords.top = evt.clientY + document.body.scrollTop
				- document.body.clientTop;
		// include html element space, if applicable
		if (document.body.parentElement
				&& document.body.parentElement.clientLeft) {
			var bodParent = document.body.parentElement;
			coords.left += bodParent.scrollLeft - bodParent.clientLeft;
			coords.top += bodParent.scrollTop - bodParent.clientTop;
		}
	}
	return coords;
}
