var menu=new Array();	// Массив объектов-ячеек меню (генерируется функцией genMenu, которая, в свою очередь, генерируется php-функцией buildMenu в скрипте functions.php)
var menuh=new Array();	// Массив соответствия ячеек топ-меню и головных ячеек массива menu
var newc=new Array('#4C352F','#887059','#99826B','#AA9480','#BBA896','#CCBCAE','#DDD2C7','#EEE8E2');
var oldc=new Array('#4C352F','#9A7D62','#B8A18B','#C4B297','#D5C7B1','#E6DCCD','#F1ECE3','#FFFFFF');
var modc=new Array('#4C352F','#BDDE75','#BDDE75','#BDDE75','#BDDE75','#BDDE75','#BDDE75','#BDDE75');
var sid=-1;	// Номер авыбранной ячейки топ-меню; newc - на какой цвет изменяется фон ячейки при наведении; oldc - каков цвет фона изначально; modc - на какой цвет фон изменяется при нажатии
var hoverC=new Array();	// Массив соответствий оригинального и изменённого при наведении цвета фона ячейки сайд-меню
hoverC['mi_e']='#DED9D0';hoverC['mi_b']='#C4B9AA';hoverC['mi_s']='#CDE1AA';
var leaveC=new Array();	// Массив, содержащий оригинальные цвета фона ячеек сайд-меню
leaveC['mi_b']='#D2C6B6';leaveC['mi_e']='#EEE8DF';leaveC['mi_s']='#DCF1B6';
lower='абвгдеёжзийклмнопрстуфхцчшщъыьэюяabcdefghijklmnopqrstuvwxyz';
highs='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ';
function upcase(s){	// Поднятие регистра символов, которым не предшествует "&". Так, функция преобразует символ "и" в "И", но "&и" в "и"
	r='';
	for(i8=0;i8<s.length;i8++){
		q=s.substr(i8,1);
		if(q=='&'){
			r+=s.substr(i8+1,1);
			i8++;
		}else{
			p=lower.indexOf(q);
			r+=(p==-1)?q:highs.substr(p,1);
		}
	}																 
	return r;
}
function normcase(s){	// Пропуск амперсентов ("&") в заголовках страницы, удаление нижнего подчёркивания ("_") в заголовках неотображаемых ячеек
	r='';
	for(i8=0;i8<s.length;i8++){
		q=s.substr(i8,1);
		if(q=='&'){
			r+=s.substr(i8+1,1);
			i8++;
		}else if(!((q=='_')&&(i8==0)))r+=q;
	}																 
	return r;
}					 
function menu_expand(){						
	lk2='menuExpand(\''+this.id+'\')';
	l4=this.level()*10-2;
	if(this.hasChildren())cs='arr_cs.gif';else cs='blc_us.gif';
	if((l4>15)&&(this.icl=='mi_b')){
		this.icl='mi_e';
		if(this.hasChildren())cs='arr_cs.gif';else cs='blc_us.gif';
	}
	if((l4>15)&&(this.icl=='mi_s')){
		this.icl='mi_s';
		if(this.hasChildren())cs='arr_ex.gif';else cs='blc_sl.gif';
	}
	if((this.level()==1)&&(!(this.hasChildren())))cs='blc_us.gif';
	return '<tr><td class="'+this.icl+'" onclick="'+lk2+'" style="cursor:pointer;overflow:hidden;vertical-align:middle;border:0px none" id="m'+this.id+'" bgcolor="'+leaveC[this.icl]+'" onmouseover="this.bgColor=hoverC[this.className]" onmouseout="this.bgColor=leaveC[this.className]"><div class="smtop" style="width:'+(204-l4)+'px;overflow:visible;margin-left:'+l4+'px;margin-top:5px;margin-bottom:5px" id="img_'+this.id+'">'+this.imgChange(cs)+'</div></td></tr><tr><td style="height:1px" bgcolor="#B6ADAD" id="'+this.id+'"></td></tr>';
}
function menu_gensubcode(){
	t='';
	for(i=0;menu[this.id+'_'+i];i++)if(menu[this.id+'_'+i].title.substr(0,1)!='_')t+=menu[this.id+'_'+i].expand();
	return '<table cellspacing="0" cellpadding="0" style="width:204px"><tr><td style="height:1px" bgcolor="#B6ADAD"></td></tr>'+t+'</table>';
}
function menu_level(){
	a=this.id.split('_');
	return a.length-2;
}
function menu_mainparent(){
	p1=this.id.indexOf('_')+1;
	p2=this.id.indexOf('_',p1);
	return parseInt(this.id.substr(p1,p2-p1));
}
function menu_chgimg(src){								
	tx='<table cellspacing="0" celpadding="0" class="'+this.icl+'"><tr><td rowspan="2" valign="top"><img style="margin-right:5px" src="img/'+src+'" width="11" height="11" border="0" alt="" /></td><td height="1"></td></tr><tr><td class="smtop" align="left">'+upcase(this.title)+'</td></tr></table>';
	if(document.getElementById('img_'+this.id))document.getElementById('img_'+this.id).innerHTML=tx;
	return tx;
}
function menu_locate(){
	if((this.link=='')||(this.link=='#'))return;else{
		hlid=1;
		smid=this.id;
		if(menu[this.id+'_0']){
			hlid=0;
			smid+='_0';
		}
		lnk=this.link;
		if(lnk.indexOf('?')==-1)lnk+='?';else lnk+='&';
		lnk+='sm='+smid+'&hl='+hlid;
		window.location.href=lnk;
	}
}
function menu_hc(){
	this.m6=0;			  
	for(this.i3=0;menu[this.id+'_'+this.i3];this.i3++){
		if(menu[this.id+'_'+this.i3].title.substr(0,1)!='_')this.m6=1;
	}
	return(this.m6==1);
}
function menuItem(nm,pt,tl,lk){		// Объект - ячейка меню
	this.icl='mi_b';				// Свойство - CSS-класс отображения ячейки (имеет смысл для ячеек сайд-меню)
	this.id=nm;						// Свойство - идентификатор ячейки
	this.parent=pt;					// Свойство - идентификатор родительской ячейки
	this.title=tl;					// Свойство - заголовок ячейки
	this.link=lk;					// Свойство - ссылка, соответствующая ячейке
	this.hasChildren=menu_hc;		// Метод - имеет ли ячейка видимых (что важно) потомков
	this.imgChange=menu_chgimg;		// Метод - изменить CSS-класс и пиктограмму ячейки; возврат - HTML-код ячейки без скобок <td> ... </td>
	this.expand=menu_expand;		// Метод - раскрытие подменю; возврат - HTML-код подменю ячейки
	this.locate=menu_locate;		// Метод - переход по ссылке ячейки. Если сылка не сопоставлена - не делаем ничего
	this.genHTML=menu_gensubcode;	// Метод - генерация HTML-кода данной ячейки
	this.mainParent=menu_mainparent;// Метод - индекс ячейки первого уровня, содержащей данную
	this.level=menu_level;			// Метод - уровень ячейки в структуре
	return;
}															   
function menuExpand(mid,uc){	// Раскрыть/свернуть подменю из сайд-меню (т.е. не менее второго уровня)
	if(menu[mid+'_0']){	// Возможно ли раскрыть подменю
		mi=document.getElementById(mid);
		if(!mi)return;								 
		if(mi.innerHTML==''){	// Если подменю ещё не раскрыто...
			if((menu[mid].link=='')||(menu[mid].link=='#')||(uc)){	// Если меню раскрывется без перехода на страницу...
				mi.innerHTML=menu[mid].genHTML();
				if(menu[mid].hasChildren())menu[mid].imgChange('arr_ex.gif');
			}else{
				lnk=menu[mid].link;
				if(lnk.indexOf('?')==-1)lnk+='?';else lnk+='&';
				lnk+='sm='+mid+'_0&hl=0';	// Указываем следующей странице, из какого меню был произведён переход (указываем, то меню нужно только раскрыть - но не выделять ничего зелёным)
				window.location.href=lnk;
			}
		}else{	// ...иначе же
			if((menu[mid].link=='')||(menu[mid].link=='#')||(uc)){	// Если меню раскрывется без перехода на страницу...
				mi.innerHTML='';
				menu[mid].imgChange('arr_cs.gif');
			}else{
				lnk=menu[mid].link;
				if(lnk.indexOf('?')==-1)lnk+='?';else lnk+='&';
				lnk+='sm='+mid+'_0&hl=0';	// Указываем следующей странице, из какого меню был произведён переход (указываем, то меню нужно только раскрыть - но не выделять ничего зелёным)
				window.location.href=lnk;
			}
		}		   
	}else{	// Раскрыть нельзя - переходим по ячейке
		lnk=menu[mid].link;
		if(lnk.indexOf('?')==-1)lnk+='?';else lnk+='&';
		lnk+='sm='+mid+'&hl=1';	// Указываем следующей странице, из какого меню был произведён переход
		window.location.href=lnk;
	}
}
function buildMenu(){	// Присвоение нужных названий ячейкам топ-меню (единоразово после загрузки страницы)
	for(i=2;i<=8;i++)if(menuh[i-1]!=-1)document.getElementById('topmenu'+i).innerHTML=upcase(menu["id_"+menuh[i-1]].title);
}
function tlmo(n){	// Курсор наведён на n-ю ячейку топ-меню
	if(n!=sid)document.getElementById('tei'+n).bgColor=newc[n-1];
}
function tlml(n){	// Курсор покинул n-ю ячейку топ-меню
	if(n!=sid)document.getElementById('tei'+n).bgColor=oldc[n-1];
}
function tlmc(n,off){	// Раскрытие нужного сайд-меню при щелчке на n-ю топ-ячейку
	if(n==1)window.location.href='http://www.ngaha.ru/';	// Первая топ-ячейка - "Главная"
	if((!off)&&(menu['id_'+menuh[n-1]].link!='')&&(menu['id_'+menuh[n-1]].link!='#')){	// Если топ-ячейка ассоциирована со страницей
		lnk=menu['id_'+menuh[n-1]].link;
		if(lnk.indexOf('?')==-1)lnk+='?';else lnk+='&';
		lnk+='sm=id_'+menuh[n-1]+'_0&hl=0';
		window.location.href=lnk;
	}else if((off)||(menu['id_'+menuh[n-1]+'_0'])){ // Если топ-ячейке действительно соответствует сайд-меню...
		elm=document.getElementById('tei'+n);
		if(n==sid){	// Если n-е сайд-меню уже раскрыто, скрываем его
			sid=-1;
			t=oldc[n-1];
			oldc[n-1]=modc[n-1];
			modc[n-1]=t;
			elm.bgColor=oldc[n-1];
			document.getElementById('lm').innerHTML='';
		}else{
			if(sid!=-1){
				t=oldc[sid-1];
				oldc[sid-1]=modc[sid-1];
				modc[sid-1]=t;
				document.getElementById('tei'+sid).bgColor=oldc[sid-1];
			}
			sid=n;
			t=oldc[n-1];
			oldc[n-1]=modc[n-1];
			modc[n-1]=t;
			elm.bgColor=oldc[n-1];
			if(menu['id_'+menuh[n-1]+'_0']){	// Есть смысл раскрывать сайд-меню только если оно есть - это сбережёт целый пиксель вёрстки
				t1=menu['id_'+menuh[n-1]].genHTML();
				document.getElementById('lm').innerHTML='<table cellspacing="0" cellpadding="0" border="0">'+t1+'</table>';
			}
		}
	}else window.location.href=menu['id_'+menuh[n-1]].link;	// Или же переходим по ссылке
}
function expandOnce(id,hl){	// Раскрытие меню именно в той конфигурации, что и на предыдущей странице (с которой был произведён переход - если таковой имел место)
	if((!menu[id])||((menu[id].level()==1)&&(hl==0))){	// Если сайд-меню изначально не раскрыто, а переход осуществлён с топ-меню
		m=id.substr(3,1);					 
		k=-1;
		for(j=0;j<8;j++)if(menuh[j]==m)k=j+1;
		linknav=menu['id_'+m].title;
		tlmc(k,1);
		return;
	}
	if(hl==1)menu[id].icl='mi_s';
	a2=new Array();pid=id;
	for(i=0;pid!='id';i++){	// Раскладываем информацию о раскрытиях в массив
		a2[i]=pid;														
		ttm='';
		if(((hl==1)&&(i>0))||((hl==0)&&(i>1)))ttm+='<a href="javascript:menu[\''+pid+'\'].locate()" style="color:#7F7F7F;font-family:Tahoma;font-size:11px;font-weight:normal;text-decoration:underline">';
		if(!((i==0)&&(hl==0)))ttm+=normcase(menu[pid].title);
		if(((hl==1)&&(i>0))||((hl==0)&&(i>1)))ttm+='</a>/&nbsp;';
		linknav=ttm+linknav;	// Строка навигации, отображаемая над заголовком страницы
		pid=menu[pid].parent;
	}			 	
	if(hl==0)menu[a2[1]].icl='mi_s';
	k=-1;
	for(j=0;j<8;j++)if(('id_'+menuh[j])==a2[i-1])k=j+1;
	if(!menu[a2[i-1]+'_0'])return;
	tlmc(k,1);	// Первый клик - по топ-меню
	r=a2.length;
	for(m=r-2;m>0;m--)menuExpand(a2[m],'auto');	// Клики по сайд-меню
	delete a2;
}
