addEvent( window, 'load', load );

var popID;
var tID;

function load() {
  inMenu = false;
  body = document.getElementsByTagName("body")[0];
  last = null;
  if( getNode("menu_news") == null ) return;
  var menu_news  = new MenuP(getNode("menu_news"));
  menu_news.add( new Menu("Новости", "index.php?page=news"));
  menu_news.add( new Menu("Турниры", "index.php?page=tournament"));
  menu_news.add( new Menu("Вакансии", "index.php?page=vacancy"));
  menu_news.create();
  
  if( getNode("menu_info") == null ) return;
  var menu_info = new MenuP(getNode("menu_info"));
  menu_info.add( new Menu("О шарде", "index.php?page=about" ));
  menu_info.add( new Menu("Статус", "index.php?page=status" ));
  menu_info.add( new Menu("Администрация", "index.php?page=admins"));
  menu_info.add( new Menu("Правила", "index.php?page=rules"));
  menu_info.add( new Menu("Перенос чаров", "index.php?page=perenos"));
  menu_info.add( new Menu("Помощь серверу", "index.php?page=donate"));
  menu_info.add( new Menu("Пожертвования", "index.php?page=services"));
  menu_info.add( new Menu("Таблицы", "index.php?page=tables"));
  menu_info.add( new Menu("Топ листы", "index.php?page=ntop" ));
  menu_info.add( new Menu("Гильдии", "index.php?page=guilds" ));
  menu_info.add( new Menu("Фракции", "index.php?page=fraction" ));
  menu_info.add( new Menu("Каторга", "index.php?page=jail" ));
  menu_info.add( new Menu("Галерея", "index.php?page=screen" ));
  menu_info.add( new Menu("Монстры", "index.php?page=monsters" ));
  menu_info.add( new Menu("Творчество", "index.php?page=tvor" ));
  menu_info.add( new Menu("Турниры", "index.php?page=tournament" ));
  menu_info.add( new Menu("Товары", "index.php?page=vendors" ));
  menu_info.add( new Menu("Помощь | FAQ", "index.php?page=faq" ));
  menu_info.add( new Menu("Особености", "index.php?page=newest" ));
  menu_info.create();
  
  if( getNode("menu_services") == null ) return;
  var menu_services = new MenuP(getNode("menu_services"));
  menu_services.add( new Menu("Регистрация", "index.php?page=createaccount"));
  menu_services.add( new Menu("Смена пароля", "index.php?page=password"));
  menu_services.add( new Menu("Напоминание пароля", "index.php?page=passrequest"));
  menu_services.add( new Menu("Сменить E-Mail", "index.php?page=email"));
  menu_services.create();
  
  if( getNode("menu_files") == null ) return;
  var menu_files = new MenuP(getNode("menu_files"));
  menu_files.add( new Menu("Игровые", "index.php?page=file_game"));
  menu_files.add( new Menu("Вспомогательные", "index.php?page=file_adv"));
  menu_files.create();
  
  if( getNode("menu_community") == null ) return;
  var menu_community = new MenuP(getNode("menu_community"));
  menu_community.add( new Menu("Форум", "http://forum.nova-uo.ru"));
  menu_community.add( new Menu("Чат | mIRC", "http://nova.netbynet.ru/mirc.shtml"));  
  menu_community.create();
  
}

function MenuP ( node ) {
this.node = node;
this.menuItems = new Array();
MenuP.prototype.add = function( menuItem ) {
this.menuItems[ this.menuItems.length ] = menuItem;	
}
MenuP.prototype.create = function( ) {
var dNode = document.createElement( "div" );
dNode.className = "jsMenu";
var str = "_" + this.node.id;
dNode.setAttribute( "id", str );
var w = this.node.offsetWidth;
dNode.style.width = w > 160 ? w+"px" : "160px";
dNode.style.top = ( this.node.offsetTop + this.node.offsetHeight ) + "px";
dNode.style.left = this.node.offsetLeft + "px";
addEvent( this.node, "mouseover", function() { showMenuInTime(str, 150) } );
addEvent( this.node, "mouseout", function() { setInMenu(false) } );
dNode.setAttribute( "pItemID", this.node.id );
addEvent( dNode, "mouseover", function() { setInMenu(true) } );
addEvent( dNode, "mouseout", function() { setInMenu(false) } );
var html = "<ul>";
for( var i=0; i<this.menuItems.length; i++ ) {
	html += this.menuItems[i].getLinkHTML();
}
body.appendChild( dNode );
dNode.innerHTML = html + "</ul>";
}
}
function Menu( value, href ) {
this.value = ( value == null ) ? "" : value;
this.href = ( href == null ) ? "" : href;
if( this.href != "" && typeof useAbsPath != "undefined" )
	if( useAbsPath && this.href.indexOf( "http://" ) == -1 && this.href.indexOf( "https://" ) == -1 )
		this.href = "http://www.opera.com" + this.href;
Menu.prototype.getLinkHTML = function () {
	if( this.value != "" && this.href != "" )
		return "<li><a onclick=\"setInMenu(false); hideMenu(); return true;\" href=\"" + this.href + "\">" + this.value + "</a></li>";
	else if( this.value != "" && this.href == "" )
		return "<li class='heading'>" + this.value + "</li>";
	else
		return "<li class='separator'>&nbsp;</li>";
}
}
function showMenuInTime( node, time ) {
popID = setTimeout( "showMenu('" + node + "')", time );
}

function showMenu( node ) {
clearTimeout( popID );
if( typeof node == "string" )
	node = getNode( node );
if( last != null && last != node )
	hideMenu( last );
else if( last == node ) {
	setInMenu( true );
	return;
}
var pItem = getNode( node.getAttribute( "pItemID" ) );
var menuLeft = body.offsetLeft;
var menuTop = pItem.offsetHeight + body.offsetTop;
var tmp = pItem;
while(tmp.tagName!="BODY") {
	if( tmp.tagName == "html:body" ) break;
	
	menuLeft += tmp.offsetLeft;
	menuTop  += tmp.offsetTop;
	tmp = tmp.offsetParent;
}
node.style.left = menuLeft + "px";
node.style.top = menuTop + "px";
var w = pItem.offsetWidth;
node.style.width = w > 160 ? w+"px" : "120px";
node.style.display = "block";	
setInMenu( true );
last = node;
tID = setTimeout( "hideMenu( last )", 500 );
}

function hideMenu( node ) {
if( node == null ) {
	setInMenu( false );
	hideMenu( last );
	return;
}
if( typeof node == "string" )
	node = getNode( node );
if( !inMenu ) {
	node.style.display = "none";
	var pItem = getNode( node.getAttribute( "pItemID" ) );
	last = null;
	clearTimeout( tID );
} else
	tID = setTimeout( "hideMenu( last )", 500 );	
}

function setInMenu( value ) {
inMenu = value;	
if( !value ) clearTimeout( popID );
}

function addEvent( node, evtType, func ) 
{
	if( node.addEventListener ) 
	{
		node.addEventListener( evtType, func, false );
		return true;
	} 
	else if( node.attachEvent )
		return node.attachEvent( "on" + evtType, func );
	else
		return false;
}

function getNode( nodeId ) {
if( document.getElementById )
	return document.getElementById( nodeId );
else if( document.all && document.all( nodeId ) )
	return document.all( nodeId );
else if( document.layers && document.layers[ nodeId ] )
	return document.layers[ nodeId ];
else
	return false;
}	  

function email(one,two){
	var email = "";
    var i = one.length;
	while (i>0) {
		email += one.substring(i-1,i);
		i--;
	}
	email += "@";
    var i = two.length;
	while (i>0) {
		email += two.substring(i-1,i);
		i--;
	}
	document.location='mailto:'+email;
}
