isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
conme_item = new Array();
conme_item[0] = "<hr>";
conme_item[1] = "<b>{nick}</b><hr>";
conme_item[11] = "<a href='#' onclick=\"return parent.type.AddNick('{nick}')\">Вписать</a>";
conme_item[12] = "<a href='#' onclick=\"return parent.type.AddNick('^{nick}')\">Приватно</a>";
conme_item[17] = "<a href='#' onclick=\"return parent.type.NewText('/ignore -nick {nick}')\">Игнор</a>";
conme_item[31] = "<a href='./?mode=viewinfo&id={user_id}' target=info onclick=\"parent.PopUp(500,600,'info')\">Инфа</a>";
conme_item[32] = "<a href='./?mode=pager_new&touser={user_id}' target=pager onclick=\"parent.PopUp(500,300,'pager')\">Оставить сообшение</a>";
conme_item[35] = "<a href='/pics/{user_id}.jpg' target=photo_{user_id} class=userpicinmenu><img src='/pics/{user_id}_th.jpg' border=0 width=100 height=100></a>";
conme_item[37] = "<a href='#' onclick=\"return parent.type.NewText('/ignore -id {nick}')\">Игнор</a>";
conme_item[51] = "<a href='#' onclick=\"return parent.type.NewText('/clear {nick}')\">Очистить</a>";
conme_item[52] = "<a href='#' onclick=\"return parent.type.NewText('/total {nick}')\">Затоталить</a>";
conme_item[53] = "<a href='#' onclick=\"return parent.type.NewText('/untotal {nick}')\">Разтоталить</a>";
conme_item[54] = "<a href='#' onclick=\"return parent.type.NewText('/rename {nick} {nick}')\">Переименовать</a>";
conme_item[55] = "<a href='#' onclick=\"return parent.type.NewText('/kick {nick}')\">Самовыход</a>";
conme_item[56] = "<a href='./?mode=viewinfo&num={num_id}' target=info onclick=\"parent.PopUp(400,400,'info')\">ДопИнфа</a>";

conme_list = new Array();

function PopUp(width, height, name, url) {
	if (!url) {
		url = "about:blank";
	}
    var settingi = "top=50,left=50,titlebar=no,toolbar=0,width="+width+",height="+height+",scrollbars=1,resize=1,resizable=1";
    open(url, name, settingi);
}

function NickColor (nick, sex) {
	nick = htmlspecialchars(nick);
	var regexp = /([а-яА-ЯёЁ]+)/ig;
	nick = nick.replace(regexp, "<span class=nickColorRus_"+sex+">$1</span>");
	return "<span class=nickColor_"+sex+">"+nick+"</span>";
}

function htmlspecialchars (text) {
	var regexp = /\&/ig;
	text = text.replace(regexp, "&amp;");
	var regexp = /\"/ig;
	text = text.replace(regexp, "&quot;");
	var regexp = /\'/ig;
	text = text.replace(regexp, "&#039;");
	var regexp = /</ig;
	text = text.replace(regexp, "&lt;");
	var regexp = />/ig;
	text = text.replace(regexp, "&gt;");
	return text;
}

function javaspecialchars (text) {
	text = htmlspecialchars(text);
	var regexp = /\r\n/ig;
	text = text.replace(regexp, "\n");
	var regexp = /\n/ig;
	text = text.replace(regexp, "\\n");
	return text;
}


function contextMenuHide() {
	for (var i = 0; i<conme_list.length; i++) document.getElementById(conme_list[i]).style.display = "none";
}

function contextMenuCreate(name, id, items, nick, user_id) {
	conme = document.createElement("div");
	conme.id = name;
	conme.setAttribute("onclick", "contextMenuHide();");
//	selevelChoise.setAttribute("onmouseover", "clearTimeout(selevelTimer)");
	conme.className = "contextMenu";
	conme.style.position = "absolute";
	conme.style.display = "none";
	var bod = "";
	items = items.split(",");
	for (i=0; i<items.length; i++) bod += conme_item[items[i]];
	var re = /\{id\}/g;
	bod = bod.replace(re, id);
	var re = /\{nick\}/g;
	bod = bod.replace(re, javaspecialchars(nick));
	var re = /\{user_id\}/g;
	bod = bod.replace(re, user_id);
	conme.innerHTML = bod;
	document.body.appendChild(conme);
	conme_list[conme_list.length] = conme.id;
	return conme;
}


function contextMenuOpen(evt, id, items, nick, user_id) {
	contextMenuHide();
	evt = (evt) ? evt : (window.event) ? event : null;
//	elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
//alert("Action: "+elem.id);
//	if (elem.id && elem.id.indexOf("l_") == 0) {
//		var link_id = elem.id.substr("2");
		var link_id = id;
		if (document.getElementById("contextmenu_"+link_id)) {
			cm = document.getElementById("contextmenu_"+link_id);
		} else {
			cm = contextMenuCreate("contextmenu_"+link_id, link_id, items, nick, user_id);
		}
		// Cursor coords
		var coords = {left: 0, top: 0};
		if (evt.pageX) {
			coords.top  = evt.pageY;
			coords.left = evt.pageX;
		} else if (evt.clientX) {
			coords.top  = evt.clientY + document.body.scrollTop  - document.body.clientTop;
			coords.left = evt.clientX + document.body.scrollLeft - document.body.clientLeft;
			if (document.body.parentElement && document.body.parentElement.clientLeft) {
				var bodElement = document.body.parentElement;
				coords.top  += bodParent.scrollTop  - bodParent.clientTop;
				coords.left += bodParent.scrollLeft - bodParent.clientLeft;
			}
		}
		//alert("Top: "+coords.top+"\nLeft: "+coords.left);
		cm.style.top  = coords.top; 
		cm.style.left = coords.left;
		cm.style.display = "block";
		
		if (evt.returnValue) { // IE
			evt.cancelBubble();
			evt.returnValue = false;
		} else if (evt.target) { // W3C
			evt.preventDefault();
			evt.stopPropagation();
		}
		return false;
/*	} else if (elem.id && elem.id.indexOf("contextmenu_") == 0) {
		if (evt.returnValue) { // IE
			evt.cancelBubble();
			evt.returnValue = false;
		} else if (evt.target) { // W3C
			evt.preventDefault();
			evt.stopPropagation();
		}
		return false;
	} else if (elem.parentNode && elem.parentNode.id && elem.parentNode.id.indexOf("contextmenu_") == 0) {
		if (evt.returnValue) { // IE
			evt.cancelBubble();
			evt.returnValue = false;
		} else if (evt.target) { // W3C
			evt.preventDefault();
			evt.stopPropagation();
		}
		return false;
	}*/
}
