
   var ListOpenMenu = new Array();                 // список открытых меню
   var FlagClickMenu=0;
   var FlagMouseOverCellMenu=0;
   var FlagLeftViewMenu=0;
   var OffsetYMenu=25; 
   var OffsetXMenu=-16; 


if(navigator.userAgent.indexOf("Firefox")!=-1) OffsetYMenu=20; 

function getXYcoord (what) { 

var t_d, t_d_x, t_d_y;
// возвращаются координаты объекта, заданного с помощью атрибута id 
//var what = document.all(nvn); 

if ( document.layers ) return what; // NS4 images contain x and y values 

var rd = { x:0 ,y:0 }; 


//                t_d = what.offsetParent;
//                t_d_x = t_d.offsetLeft;       // ??????????
//                t_d_y = what.offsetTop;       // ??????????

                t_d_x = what.offsetLeft;       
                t_d_y = what.offsetTop;       


                t_d=what.offsetParent;
                while(t_d.offsetParent)
				 { 
				   t_d_x+=t_d.offsetLeft; t_d_y+=t_d.offsetTop; t_d=t_d.offsetParent; 
				   }
				   
                t_d_x+=document.body.scrollLeft;
///////                t_d_y+=document.body.scrollTop;
				
				rd.x=t_d_x;
				rd.y=t_d_y;
//                alert(t_d_x+" "+t_d_y);


/*
// возвращаются координаты объекта, заданного с помощью атрибута id 
var elm = document.all(nvn); 
if ( document.layers ) 
return elm; // NS4 images contain x and y values 
var rd = { x:0 ,y:0 }; 
do { 
rd.x += parseInt( elm.offsetLeft ); 
rd.y += parseInt( elm.offsetTop ); 
elm = elm.offsetParent; 
} while ( elm ); 
*/

return rd 
}; 






//----------------------------------------- Показать слой
 function show_layer(x, tlx, tly)
 {
  if(document.layers)
   {
	 if(document.layers[x]) 
	  {
        document.layers[x].visibility="show";
        document.layers[x].left=tlx; 
        document.layers[x].top=tly; 
	  }
	 }
  else
   {
	 if(document.all[x]) 
	  {
        document.all[x].style.visibility="visible";
        document.all[x].style.left=tlx; 
        document.all[x].style.top=tly; 
	  }
	 }
  }


//----------------------------------------- Скрыть слой
 function hide_layer(x)
 {
  if(document.layers)
   { if(document.layers[x]) document.layers[x].visibility="hide"; }
  else
   { if(document.all[x]) document.all[x].style.visibility="hidden"; }
  }







 function CloseMenu(NM)
 {
   var lengthNM, FlagFindElem, i;
   var tba=new Array();

 
   FlagFindElem=-1;
   if(NM!='')
    {
	    lengthNM=NM.split('m').length; 
	    for (i = 0; i < ListOpenMenu.length; i++) 
	      if((ListOpenMenu[i].split('m').length>=lengthNM)&&(FlagFindElem<0)) 
		    FlagFindElem=i; 
//  		    alert('close '+ListOpenMenu[i]+" "+ListOpenMenu[i].split('m').length+" NM"+NM+" "+lengthNM);  
//	    alert('close '+FlagFindElem+" NM "+NM+" "+lengthNM);  
	 } 

    if(NM=='') { FlagFindElem=0; FlagLeftViewMenu=0; }
	if(FlagFindElem>=0)
	{
     for (i = FlagFindElem; i < ListOpenMenu.length; i++) 
	  {
		if(document.all(ListOpenMenu[i]))  
		 {
           targetElement = document.all(ListOpenMenu[i]);     
           if(targetElement) hide_layer(ListOpenMenu[i]);
		 }
 	    }
		
	 ListOpenMenu.length=FlagFindElem;
     }

	  
//	 if(ListOpenMenu.length>0) 
	 if(NM!='') 
	  {
	  
	   if(FlagFindElem>=0) 
  	      ListOpenMenu.length=FlagFindElem+1;
       else	
        ListOpenMenu.length=ListOpenMenu.length+1;

	    ListOpenMenu[ListOpenMenu.length-1]=NM; 
//	    alert('close '+NM+' '+FlagFindElem+' '+ListOpenMenu.length);  
	   }

  }



//-----------------------------------------  Обрабатываем событие нажатия мышки
 function OnEvent_MouseClick()
 {
 
 
//    alert(FlagMouseOverCellMenu);
    if(FlagMouseOverCellMenu==0) 
	 {
	  FlagClickMenu=0;
      CloseMenu('');
	  }
	  
  }
  
  
  
  
//----------------------!!!!--- При любом щелчке мыши сначала вызываем OnEvent_MouseClick(); -----!!!!----
 if(document.layers)
  {
  // Для Netscape
   window.captureEvents(Event.MOUSEDOWN);
   window.onmousedown=OnEvent_MouseClick;
   } 
 else
  {
   // Для IE
   document.onmousedown=OnEvent_MouseClick;
   }












//-----------------------------------------  Обрабатываем событие мышка над меню
 function OnEvent_MouseOverCellMenu(NM, Type, src, clrOver) 
 { 
  // снимаем флаг (мыш над меню)
  FlagMouseOverCellMenu=1;
  if(FlagClickMenu!=1) return;
//  if(FlagClickMenu==0) 


   var rd;

//    targetElement = document.all(NM);     
	
  if(document.layers)
   targetElement=document.layers[NM];
  else
   targetElement=document.all[NM];
	
	
    CloseMenu(NM);
    if(targetElement)
     {
//       CloseMenu(NM);
	 
	   rd=getXYcoord(src);
	 
//       alert("x= "+rd.x+"  y="+rd.y+" "+targetElement.getAttribute('id')+" "+NM);
	   
//	   targetElement.style.left=rd.x;
//	   targetElement.style.top=rd.y;
	   
	   if(Type==2) 
	    {
//		 w=document.body.clientWidth;h=document.body.clientHeight;
		 if(((rd.x+targetElement.offsetWidth+src.offsetWidth)<document.body.clientWidth)&&(FlagLeftViewMenu==0))
		  {
  	       rd.x+=src.offsetWidth;
//           alert(targetElement.offsetWidth+" "+(rd.x+src.offsetWidth)+" "+document.body.clientWidth);  		   
		   }
		 else
		  {
           FlagLeftViewMenu=1;			  
		   rd.x-=targetElement.offsetWidth+5;
//           alert(targetElement.offsetWidth);  		   
		   }
		 }
		 
	   if(Type==1) 
	    {
	      rd.y+=OffsetYMenu;

  		  if((rd.x+targetElement.offsetWidth)>document.body.clientWidth)
		   rd.x=document.body.clientWidth-targetElement.offsetWidth-10;
		   
		   rd.x+=OffsetXMenu;
//		  else
//           alert(targetElement.offsetWidth+" "+(rd.x+src.offsetWidth)+" "+document.body.clientWidth);  		   
		   
		  }

//       alert("x= "+src.offsetHeight+"  y="+src.offsetWidth+" "+targetElement.getAttribute('id')+" "+NM);
	   
       // показываем слой
       show_layer(NM, rd.x, rd.y);
       }






 /*
    // По имени рисунка меню создаем его экземпляр 
    targetElement = document.all(NM);     
    if((targetElement!="")&&(src)&&(NM!=""))
     {
        rd=getXYcoord(NM);
        if(targetElement.getAttribute('id')=="Company") document.all[NM].style.left =rd.x-40; else document.all[NM].style.left =rd.x;
        document.all[NM].style.top = 120;
//        alert("l= "+event.clientX+"  n="+rd.x+" "+targetElement.getAttribute('id'));
       }





  CurrentActiveImageName=NM; 
*/

  // Значения Type-идентификатор меню над которым находится мышь 
  
  //-------------------------- (подсветка таблицы)
//  if (!src.contains(event.fromElement)) 
  if (clrOver!="") 
   { 
    // меняем курсор
    src.style.cursor = 'hand'; 
    // меняем цвет
    src.bgColor = clrOver; 
    


    // Если есть открытые меню (подменю), закрываем их
//    if (FlagOpenMenu>Type) CloseMenu(Type+1);
    
/*    
    // Если задано имя подменю, показываем его (или если это главное меню, то показываем его в том случае если оно уже открыто)
    if ((NM!=NameMenu[FlagOpenMenu])&&(NM!="")&&((Type!=1)||(FlagOpenMenu>0))) 
     {

      // показываем новый слой
      show_layer(NM);

      // Сохраняем имя нового активного слоя
      NameMenu[Type+1] = NM;

      // флаг открытия меню и его номер
      FlagOpenMenu = Type+1;          
      }
*/	  
    }
  }





 function clMMenu(NM, Type, src, clrOver) 
 { 

  if(FlagClickMenu==0)
   {
     FlagClickMenu=1;
  
     if(document.layers)
      targetElement=document.layers[src];
     else
      targetElement=document.all[src];

//     alert("t= "+Type+"  cl="+clrOver+" "+targetElement.getAttribute('id')+" "+NM);
     OnEvent_MouseOverCellMenu(NM, Type, targetElement, clrOver);
	 }
  else 
   {
    FlagClickMenu=0;
    CloseMenu('');
    }
	
	
//     alert("t= "+FlagClickMenu+"  cl="+clrOver+" "+NM);
	
  }



//-----------------------------------------  Обрабатываем событие мышка вне ячейки таблицы
 function OnEvent_MouseOutCellMenu(src, clrIn) 
 { 
  //-------------------------- (убираем подсветку таблицы)
    // снимаем флаг (мыш над меню)
    FlagMouseOverCellMenu=0;


  if (clrIn!="") 
   { 
    // меняем курсор
    src.style.cursor = 'default'; 
    // меняем цвет
    src.bgColor = clrIn; 
    }
  }

