//alert("1");
//здесь описываются активные и неактивные пункты i
//дизайн v описывается в стилях
//с кликами и переходами!!!
//Константы
delete_element= new Array();
cursor_type = new Array();
time_out_ident='';
counter=0;
if (navigator.appName=='Netscape') badb=true;
else badb=false;

function child_show(obj1, yn, url, type_menu) {//активирует текущий элемент и показывает чайлд если он есть
//	if(!document.getElementById(obj1)) return;
	obj=document.getElementById(obj1);
	numb_item=obj.id.slice(1);
	//активация текущего элемента ---------------------------------------------------------------в функции описывается дизайн активации i
	child_show_item(obj1, url);
	//появление дочернего элемент (тип v)
	if(yn=="bot"){//если выводим дочек вниз
		child_left=obj.offsetLeft;
		child_top=obj.offsetTop;
		objOffsetParent=obj.offsetParent;
		while(objOffsetParent) { //лазаем по всем парентам и сумируем смещения их друг относительно друга
			child_left=objOffsetParent.offsetLeft+child_left;
			child_top=objOffsetParent.offsetTop+child_top;
			objOffsetParent=objOffsetParent.offsetParent;
		}
		child_element='v' + numb_item;
		child_obj=document.getElementById(child_element);
		child_obj.style.left=child_left;
		child_obj.style.top=child_top+obj.offsetHeight;
		child_obj.style.display="inline";
		delete_element[child_element]=false;
	}
	if(yn=="rig"){//если выводим дочек вправо
		child_left=obj.offsetLeft;
		child_top=obj.offsetTop;
		objOffsetParent=obj.offsetParent;
		while(objOffsetParent) { //лазаем по всем парентам и сумируем смещения их друг относительно друга
			child_left=objOffsetParent.offsetLeft+child_left;
			child_top=objOffsetParent.offsetTop+child_top;
			objOffsetParent=objOffsetParent.offsetParent;
		}
		child_element='v' + numb_item;
		child_obj=document.getElementById(child_element);
		child_obj.style.left=child_left+obj.offsetWidth+10;
		child_obj.style.top=child_top;
		child_obj.style.display="inline";
		delete_element[child_element]=false;		
	}
	if(!badb) child_hide_all(true);
}

function child_hide(obj1, yn) {// запрос на удаление пунктов
//	if(!document.getElementById(obj1)) return;
	delete_element[obj1]=true;
	numb_item=obj1.slice(1);	
	objPar=getParentItem(obj1); //удаляем всех родителей
	while(objPar) {
		delete_element['v'+objPar]=true;
		delete_element['i'+objPar]=true;	
		objPar=getParentItem('v'+objPar);
	}
var i;
	for(i in delete_element) {//удяляем всех детей
		if(i.indexOf(numb_item,1)==1) delete_element[i]=true;
	}
}

function child_hide_all(r) {//скрываем все чайлды у которых есть запрос на скрытие и активируем все i у каторых нет запроса на скрытие
var i;
	for(i in delete_element) {
		if(delete_element[i]) {child_hide1(i,r);}//удаляем все чайлды ???????????????? надо бы удаление гденить зделать
		if(delete_element[i]==false && i.slice(0,1)=='i') {child_show_item(i);} //заново активируем то что скрыли (при уходе и наведение на какогото дочке)
	}
}

function child_hide1(obj1, rr) {//удаление единичного пункта i и задержка на удаления пунтка v
//	if(!document.getElementById(obj1)) return;
	obj=document.getElementById(obj1);
	if(obj){
		numb_item=obj.id.slice(1);
		type_item=obj.id.slice(0,1);
		if(type_item=='i') {//деактивация пунктов типа i (строки) --------------------------------- описание дизайна не активного пункта i
			if(getObjType(numb_item)) {//верхний уровень
			//.......... раскрываем селекты попавшиме в зону действия меню
			if(!rr && document.getElementById('sel1') && document.getElementById('sel2')) {
				document.getElementById('sel1').style.display="inline";			
				document.getElementById('sel2').style.display="inline";						
			}
			//..........
			}
			else {//не верхний уровен
				obj.cells[0].style.backgroundColor="#77787A"
				obj.cells[1].style.backgroundColor="#77787A"	
				obj.cells[2].style.backgroundColor="#77787A"	
//				obj.cells[3].style.backgroundColor="#77787A"		
//				obj.cells[4].style.backgroundColor="#77787A"			
//				obj.style.backgroundColor='#ff0000';
			}
			delete delete_element[obj1];
		}
		if(type_item=='v') {//деактивация пунктов типа v (списки)
			child_element='v' + numb_item;
			if(badb) time_out_ident1=setTimeout("child_hide1_v('" + child_element +"')", 350);
			else {
				if(rr) child_hide1_v(child_element);
				else   time_out_ident1=setTimeout("child_hide1_v('" + child_element +"')", 1000);
			}
		}
	}
	else {
		delete delete_element[obj1];
	}
	
}

function child_hide1_v(obj1) {//удаление с задержкой v
//	if(!document.getElementById(obj1)) return;
	if(delete_element[obj1]) {
		child_obj=document.getElementById(obj1);
		child_obj.style.display="none";
		delete delete_element[obj1];
	}
}

function child_no_hide(obj1) {//произошло перемещение мыши, попытка отмены удаления нужных веток, при этом не нужные ветки удалятся так как у них остался запрос на удаление
//	if(!document.getElementById(obj1)) return;
	delete_element[obj1]=false;	
	numb_item=obj1.slice(1);	
	delete_element['v' + numb_item]=false;	
	delete_element['i' + numb_item]=false;
	objPar=getParentItem(obj1);
	while(objPar) {
		delete_element['v'+objPar]=false;
		delete_element['i'+objPar]=false;		
		objPar=getParentItem('v'+objPar);
	}
	time_out_ident=setTimeout("child_hide_all(false)", 200); 
}


function child_show_item(obj1, url) {//активация текущего элемента i
//	if(!document.getElementById(obj1)) return;
	//тот же кусок кода что и при активации
	obj=document.getElementById(obj1);
	numb_item=obj1.slice(1);
	//определяем тип курсора и выдаем его объекту
	if(url && url!='#') {cursor_type[obj1] = true;}	
	if(url && url=='#') {cursor_type[obj1] = false;}	
	if(cursor_type[obj1]) {
		obj.style.cursor='pointer';
	}
	else {
		obj.style.cursor='default';
	}
	//-------------------------------------------------------------------оипсание дизайна активного пункта i
	if(getObjType(numb_item)) {//если элемент верхнего уровня (тип i)
	//......скрываем select который может попасть в зону видимости меню
		if(document.getElementById('sel1') && document.getElementById('sel2')) {
			document.getElementById('sel1').style.display="none";
			document.getElementById('sel2').style.display="none";
		}
	//......
	}
	else {//если не верхнего (тип i)
	//++++++
	obj.cells[0].style.backgroundColor="#AB273E"
	obj.cells[1].style.backgroundColor="#AB273E"	
	obj.cells[2].style.backgroundColor="#AB273E"	
//	obj.cells[3].style.backgroundColor="#AB273E"		
//	obj.cells[4].style.backgroundColor="#AB273E"			
	//++++++
	}
}

function child_clk(obj1, url, target) {//переход по ссылке
	if(url && url!='#') {
		if(target=='_blank') {
			window.open(url);			
		}
		else {
			location.href=url;
		}
	}
}


function getParentItem(name) {//возвращает числовую часть родительского ID
	a=name.lastIndexOf("_")
	if(a<0) return 0;
	return name.slice(1,a);
}

function getObjType(name) {//берет числовую часть ID и говорит не родитель ли это если да то true иначе фалсе
	b=name.lastIndexOf("_")
	if(b<0) return true;
	else return false;
}

function deb(){
	debugD=document.getElementById("qqq");
	debugD.innerHTML = "<bR><BR><BR>";
var i;
	for(i in delete_element) {
	debugD.innerHTML = 	debugD.innerHTML + i + '=' + delete_element[i] + '<br>';
	}	
}