// MM_Menu Script
/******************************************************************
@author: 		Sylex
@date: 			2009-01-19
@version: 		1.0
@comments:
menu script
*******************************************************************/

var mm_menu = {
	
	mm_sel : 0, // выделенный пункт
	mm_sel_cur : 0, // выделенный пункт текущего раздела на сайте
	mm_of : [0, 0, 0, -60, -250], // позиции элементов меню от 1 до 4
	mm_sel_hide : 0, // скрываемый пункт меню
	mm_time : 500, // время задержки меню при скрытии
	mm_ids : ['menu1', 'menu2', 'menu3', 'menu4'],
	mm_all_td : [], // массив объектов меню
	mm_pm : [], // массив объектов подменю
	mm_can_close : true, // можно закрывать подменю?
	mm_e : 0, // выделенный объект
	mm_block : 'bg', // основной блок
	// эффект открытия подменю
	mm_obj_effect : 0, // объект подменю
	mm_obj_ef_width: 0, // ширина подменю
	mm_obj_ef_x: 0, // текущая обрезка
	mm_ef_timer : 0, // таймер
	mm_ef_time : 50, // задержка
	mm_step_open : 2, // шаг открытия
	//wav_menu : '/public/menu.wav', // файл для проигрывания звука при открытии меню

// инициализация меню
builds_menu_main:function(elem)
{
	var atags = document.getElementById(elem).getElementsByTagName("a");
	var text = '';
	var ns = '';
	// обходим все ссылки
	for (var t=0; t<atags.length; t++) {
		this.mm_all_td[t+1] = atags[t].parentNode;
		// текст ссылки
		text = atags[t].parentNode.innerHTML;
		// в первом и в последнем - нет разделителей
		ns = '';
		if (t == 0) ns = ' ns1';
		if (atags.length-1 == t) ns = ' ns2';
		
		// определяем, если есть выделенный пункт раздела на сайте
		if ( atags[t].parentNode.className == 'over' ) this.mm_sel_cur = t + 1;
		
		// добавляем фоны
		atags[t].parentNode.innerHTML = '<div class="sep1' + ns + '"><div class="bg_bot"><div class="bg_top"><div class="sep2">' + text + '</div></div></div></div>';
		// события
		atags[t].onmouseout = this.menu_out;
		atags[t].onmouseover = this.menu_over;
	}
	// обходим подменю
	for (var t=0; t<this.mm_ids.length; t++) {
		this.mm_pm[t] = document.getElementById(this.mm_ids[t]);
		this.mm_pm[t].onmouseover = this.pod_menu_over;
		this.mm_pm[t].onmouseout = this.pod_menu_out;
		// обходим вложенные теги A
		atags = this.mm_pm[t].getElementsByTagName("a");
		for (var i=0; i<atags.length; i++) {
			// для ссылок - событие при наведении
			atags[i].onmouseover = this.pod_menu_over;
		}
	}
},

// возвращает номер выделенного меню
getNameMenu:function(e)
{
	var attr = '';
	if ( !e && this.mm_sel != 0 ) return this.mm_sel;
	// получаем атрибут
	if (e.getAttribute('rel')) {
		
		attr = e.getAttribute('rel');
	}
	// 2 символ
	return attr.substr(1,1);
},

// возвращает объект выделенного меню
GetMenuOb:function()
{
	if ( this.mm_sel<1 || this.mm_sel>this.mm_ids.length ) return false;
	return document.getElementById('menu'+this.mm_sel);
},

// отображает подменю
ShowPodMenu:function(left)
{
	// скрываем подменю
	this.HidePodMenu();
	var e = this.GetMenuOb();
	if (!e) return;
	// получаем смещение основного блока слева
	var bg = document.getElementById(this.mm_block);
	var bg_left = bg.offsetLeft;
	// показываем
	e.style.clip = 'rect(0,0,0,0)';
	e.style.display = 'inline-block';
	// для 3 и 4 меню определяем смещение по-другому (центрируем его)
	if (this.mm_sel>2) {
		// определяем ширину области для центрирования меню
		var bg_width = bg.clientWidth;
		// смещение
		var offset_left = (bg.clientWidth-e.clientWidth)/2;
		// позиция слева
		e.style.left = bg_left + offset_left - 45 + 'px';
	} else {
		// позиция слева
		e.style.left = left + bg_left + 90 + this.mm_of[this.mm_sel] + 'px';
	}
	
	// объект для обработки
	this.mm_obj_effect = e;
	// определяем ширину подменю
	//this.mm_obj_ef_width = e.clientWidth;
	this.mm_obj_ef_width = e.clientHeight/2;
	this.mm_obj_ef_x = 0;
	// останавливаем таймер
	clearInterval(this.mm_ef_timer);
	// включаем эффект
	var _time = this.mm_ef_time;
	if (IsIE()) _time = _time / 4; else _time = _time / 2;
	this.mm_ef_timer=setInterval("mm_menu.ShowEffect()", _time);
	//playSound(this.wav_menu);
},
	
// эффект открытия подменю
ShowEffect:function()
{
	this.mm_obj_ef_x += this.mm_step_open;
	// если достигли конца
	if ( this.mm_obj_ef_x >= this.mm_obj_ef_width ) {
		// останавливаем
		clearInterval(this.mm_ef_timer);
		// стираем обрезку
		this.mm_obj_effect.style.clip = 'rect(auto,auto,auto,auto)';
		setElementOpacity(this.mm_obj_effect,1)
		return;
	}
	//this.mm_obj_effect.style.clip = 'rect(auto, ' + this.mm_obj_ef_x + 'px, auto, auto)';
	this.mm_obj_effect.style.clip = 'rect('+this.mm_obj_ef_x+'px, auto, ' + this.mm_obj_ef_x*2 + 'px, auto)';
	//setElementOpacity(this.mm_obj_effect,this.mm_obj_ef_x/this.mm_obj_ef_width)
},


// скрываем подменю
HidePodMenu:function()
{
	// если скрывать запрещено (мы находимся на подменю) - выход
	if (!this.mm_can_close) return;
	var e = document.getElementById('menu'+this.mm_sel_hide);
	if (!e) return;
	e.style.display= 'none';
	// если нужно скрыть основную подсветку
	if (this.mm_e) { this.mm_e.className = ''; this.mm_e = 0; }
	// если скрываемый пункт равен текущему - выделений нет
	if (this.mm_sel_hide == this.mm_sel ) { this.mm_sel_hide = 0; }
},

// при наведении на пункт меню
menu_over:function()
{
	var e = this.parentNode.parentNode.parentNode.parentNode.parentNode;
	e.className = 'over';
	mm_menu.mm_sel = mm_menu.getNameMenu(this);
	mm_menu.ShowPodMenu(e.offsetLeft);
},

// при отведении от пункта меню
menu_out:function()
{
	var e = this.parentNode.parentNode.parentNode.parentNode.parentNode;
	mm_menu.mm_e = e; // запоминаем объект
	var e2 = mm_menu.GetMenuOb(); // получаем выделенный пункт
	if (!e2) mm_menu.mm_e.className = '';
	// запоминаем пункт для скрытия
	mm_menu.mm_sel_hide = mm_menu.mm_sel;
	// закрываем подменю с задержкой
	setTimeout("mm_menu.HidePodMenu()", mm_menu.mm_time);
	// выделенный - отсутствует
	mm_menu.mm_sel = 0;
	// если есть раздел, отмеченный - помечаем
	if (mm_menu.mm_sel_cur>0) setTimeout("mm_menu.select_menu_current()", mm_menu.mm_time);
},

// при наведении на пункт подменю
pod_menu_over:function()
{
	mm_menu.mm_can_close = false;
},

// при отведении от пункта подменю
pod_menu_out:function()
{
	mm_menu.mm_can_close = true;
	// скрываем подменю с задержкой
	setTimeout("mm_menu.hidepodmenu_sleep()", 100);
},

hidepodmenu_sleep:function()
{
	if (!this.mm_can_close) return;
	setTimeout("mm_menu.HidePodMenu()", this.mm_time);
},

select_menu_current:function()
{
	if (this.mm_sel != 0) return;
	var m = this.mm_all_td[this.mm_sel_cur];
	if (!m) return;
	//alert(5);
	m.className = 'over';
}

}
