over_level2_state	= false;
over_level1_object	= false;
over_timeout		= false;
timeout_value		= 1300;

class_level1        = "level1";
class_level2        = "topmenu_level2";
class_active		= "_active";
menuWidth = 240;

function init_menu()
{
	td = document.getElementById("mainmenu"); 
	levels = td.getElementsByTagName("a");

	for (i=0; i < levels.length; i++)
	{                  
		if(levels[i].className == class_level1) 
		{
			levels[i].onmouseover	= show_level2;
			levels[i].onmouseout	= hide_level2;
		
			levels2 = levels[i].parentNode.getElementsByTagName("div");
			if (levels2[0])
			{
				display(levels2[0]);
			       /* levels2[0].style.width = levels[i].parentNode.offsetWidth;*/
                                levels2[0].style.width = menuWidth;
				display(levels2[0]);
				levels2[0].onmouseover	= show_level2;
				levels2[0].onmouseout	= hide_level2;
				if (window.attachEvent && !window.opera)
					levels2[0].style.left = levels2[0].offsetLeft;
                                else
                                        levels2[0].style.left = levels[i].parentNode.offsetLeft;
			}
		}
	}  

	d = document.getElementById("objects");
	if (d) d.style.display = 'block';
}

function resize_menu(level1)
{
	levels2 = level1.parentNode.getElementsByTagName("div");
	if (levels2[0])
	{            
		if (window.attachEvent && !window.opera)
		{
			levels2[0].style.left =  level1.parentNode.offsetLeft + level1.parentNode.parentNode.parentNode.parentNode.parentNode.offsetLeft;
			neosel = 0;
		}
		else
                {
			neosel = 1;
                        levels2[0].style.left = level1.parentNode.offsetLeft;
                }
		/*levels2[0].style.width = level1.parentNode.offsetWidth;*/
                levels2[0].style.width = menuWidth;
		levels2[0].style.top = level1.parentNode.parentNode.offsetTop + 41;// + neosel;
	}
}

function display_level2(level1)
{
	level2 = level1.parentNode.getElementsByTagName("div");
	if (level2[0]) display(level2[0]);
}

/*
	При наведении на любой уровень удаляет удаление по timeout
	При наведении на первый уровень показывает меню второго уровня
*/

function show_level2()
{
/* debug("show_level2 -> "+this.className); */
	erase_timeout();
	over_level2_state = true;		
	
	if (this.className != class_level1)
		return;
	if(over_level1_object == this)
		return;

    if (over_level1_object) 
    {
    	state_level(over_level1_object, 0);
    	display_level2(over_level1_object);
    }

    over_level1_object = this;
    state_level(over_level1_object, 1);    
    display_level2(over_level1_object);
    resize_menu(over_level1_object);
	over_level2_state = true;
}

function hide_level2()
{            
	erase_timeout();
	over_level2_state = false;
    over_timeout = window.setTimeout("hide_level2_timeout();", timeout_value); 
}

function hide_level2_timeout()
{
/* debug("hide_level2_timeout -> overstate="+over_level2_state); */
    if(over_level2_state)
		return;
	if(over_level1_object)
	{
		state_level(over_level1_object, 0);
		display_level2(over_level1_object);
		over_level1_object = false;
	}
}

function erase_timeout()
{
/* debug("erase_timeout -> over_timeout="+over_timeout); */
	if(over_timeout) 
		window.clearTimeout(over_timeout);
	over_timeout = false;
}

/*
	Добавляет к имени класса постфикс state_level в зависимости от параметра state
	Это необходимо для выделения пункта меню с активным меню следующего уровня
*/
function state_level(lev, state)
{
	if(!lev) return;

	if(state)
		lev.className = class_level1+class_active;
	else
		lev.className = class_level1;
}

/*
	Вспомогательная функция
	Позволяет корректно определить положение блока на экране
	по родителю
*/
function getElementPosition (offsetTrail)
{
  var offsetLeft = 0;
  var offsetTop = 0;
  while (offsetTrail) {
    offsetLeft += offsetTrail.offsetLeft;
    offsetTop += offsetTrail.offsetTop;
    offsetTrail = offsetTrail.offsetParent;
  }

  return {left:offsetLeft, top:offsetTop};
}


/*
	Вспомогатльная функция
	Задает способ скрывания и показывания блоков
	Переводит блок в противоположное состояние
*/
function display(object)
{
	class_hide = '_hide';

	reg_exp		= new RegExp(class_hide+"$");
	class_name 	= object.className;

	if(reg_exp.test(class_name))
		object.className = class_name.replace(reg_exp, '');
	else
		object.className = object.className+class_hide;
}

function process_copyright (id, data)
{
	data['rel'] = 'nofollow';
	data['target'] = '_blank';

	var elem = document.getElementById (id);
	var text = '<' + 'a';

	for (var i in data)
		text += ' ' + i + '="' + data[i] + '"';
	text += '>' + elem.innerHTML + '<' + '/' + 'a>';

	elem.innerHTML = text;
}

