var sm_typer='';
var sf ='';
var bNN4 = document.layers;
var bIE4 = document.all && document.all.item;
var bW3CDOM = document.getElementById;
var bDOMBrowser = bNN4 || bIE4 || bW3CDOM;
var lll;
var tmd;
var tmd2;
var tmdd;
var tim;
var timy;
var timerID;
var count1=0;
var count2=0;
var typer='right'; //Расположение выподающей меню относительно статического объекта
var otstupY=0;
var otstupX=0;//отступ от нижнего края по вертикале число может задоваться и отрицательное
//var menu_count=0;//количество строк меню
var pref_menu='m';//префикс ID меню
var levell='';
var pref_ppmenu='sm';//префикс ID выподающего меню
var time_hide=2000;//время задержки выпавшего меню после отвода курсора
// The function visibleSelect can hide or show selects, which is under some
// object. Parametre "state" talks what do with the selects:
//    "state=true"  means SHOW selects,
//    "state=false" means HIDE selects.
// Parametre "givedata" may be the object which covers some selects or the
// ID object on the page (document, window)

function counter(cpref_menu)
{
i=1;
 while((typeof(document.getElementById(cpref_menu+i))=='object') && (document.getElementById(cpref_menu+i)!=null)){
  i++;
 }
 menu_count=i-1;
 return menu_count;
}

function visibleSelect(state, prest, suf){

//This function was made at August 6, 2004 by Andrey Pokidov

var obj;
var ok=false;
var givedata;
givedata=prest+suf;
if (typeof(givedata)=='string'){
 obj=document.getElementById(givedata);
 if ((typeof(obj)=='object') && (obj!=null)) ok=true;
}else{
 if ((typeof(givedata)=='object') && (givedata!=null)){
  obj=givedata;
  ok=true;
 }
}

if (ok){
 var tmp=obj.offsetParent;
 moveX=0;
 moveY=0;
 while((typeof(tmp)=='object') && (tmp!=null) && (tmp!=window)){
  //alert(typeof(tmp));
  moveX+=tmp.offsetLeft;
  moveY+=tmp.offsetTop;
  tmp=tmp.offsetParent;
 }
 x1b=moveX+obj.offsetLeft;
 y1b=moveY+obj.offsetTop;
 x1e=x1b+obj.offsetWidth;
 y1e=y1b+obj.offsetHeight;

 //alert(x1b+', '+y1b+', '+x1e+', '+y1e);
 var n=document.forms.length;
 for(var i=0;i<n;i++){
  var k=document.forms[i].elements.length;
  for(var j=0;j<k;j++){
   if ((document.forms[i].elements[j].type=='select-one') ||
       (document.forms[i].elements[j].type=='select-multiple')){

    var tmp=document.forms[i].elements[j].offsetParent;
    moveX=0;
    moveY=0;
    while((typeof(tmp)=='object') && (tmp!=null) && (tmp!=window)){
     //alert(typeof(tmp));
     moveX+=tmp.offsetLeft;
     moveY+=tmp.offsetTop;
     tmp=tmp.offsetParent;
    }
    x2b=moveX+document.forms[i].elements[j].offsetLeft;
    y2b=moveY+document.forms[i].elements[j].offsetTop;
    x2e=x2b+document.forms[i].elements[j].offsetWidth;
    y2e=y2b+document.forms[i].elements[j].offsetHeight;

     //alert(x1b+', '+y1b+', '+x1e+', '+y1e);
     //alert(x2b+', '+y2b+', '+x2e+', '+y2e);
    if (((((x1b>=x2b) && (x1b<=x2e)) || ((x1e>=x2b) && (x1e<=x2e))) &&
         (((y1b>=y2b) && (y1b<=y2e)) || ((y1e>=y2b) && (y1e<=y2e)))) ||
        ((((x2b>=x1b) && (x2b<=x1e)) || ((x2e>=x1b) && (x2e<=x1e))) &&
         (((y2b>=y1b) && (y2b<=y1e)) || ((y2e>=y1b) && (y2e<=y1e))))){
     if (state){
      if (levell==prest)
      document.forms[i].elements[j].style.visibility="visible";
     }else{
      if (document.forms[i].elements[j].style.visibility!="hidden") {
      document.forms[i].elements[j].style.visibility="hidden";
      levell=prest;
       }
     }
    }//if

   }//if
  }//for
 }//for
}else{//if
//alert('I cannot understand you.');
}//if
}

function show(id)
 {
	sf=pref_ppmenu+id;
    sl=pref_menu+id;
	visibleSelect(false,pref_ppmenu,id);
	document.getElementById(sf).style.visibility="visible";
 }


function hideall(count1,pref_menu2)
	{
	 z=parseInt(count1);
	 for (id=1; id<=z; id++)
		{
			document.getElementById(pref_menu2+id).style.visibility = "hidden";
			visibleSelect(true,pref_menu2,id);
		}
	}


function hideall2(count1,pref_menu2)
	{
	 z=parseInt(count1);
	 for (id=1; id<=z; id++)
		{
			ch=parseInt(counter(pref_menu2+id+'s'));
		    for (i=1; i<=ch; i++)
				{
					document.getElementById(pref_menu2+id+'s'+i).style.visibility = "hidden";
					visibleSelect(true,pref_menu2+id+'s',i);
				}
		}
	}


function clrtimer()
	{
	timerID = tmd;
	clearTimeout(timerID);
	}
function clrtimer2()
	{

	timerID = tmd2;
	clearTimeout(timerID);
	}

function stimer(count2,l)
	{
	timerID = setTimeout('hideall('+count2+',"'+l+'")',time_hide);
	tmd = timerID;
	}

function stimer2(count2,l)
	{
	timerID = setTimeout('hideall('+count2+',"'+l+'")',time_hide);
	tmd2 = timerID;
	}

function getObj(name)
{
	 if (document.getElementById)
	 {
		   this.obj = document.getElementById(name);
		   this.style = document.getElementById(name).style;
	 }
	 else if (document.all)
	 {
		   this.obj = document.all[name];
		   this.style = document.all[name].style;
	 }
	 else if (document.layers)
	 {
		   if (document.layers[name])
		   {
			this.obj = document.layers[name];
			this.style = document.layers[name];
		   }
		   else
		   {
			this.obj = document.layers.testP.layers[name];
			this.style = document.layers.testP.layers[name];
		   }
	 }

}

function findPosX(obj)
{
		var curleft = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curleft += obj.offsetLeft
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
		return curleft;

}

function findPosY(obj)
{
		var curtop = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curtop += obj.offsetTop
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
		return curtop;
}

function setLyr(obj,lyr,typer,otstupfX,otstupfY)
{
		var newX = 0;
		var newY = 0;
		newX = findPosX(obj);
        newY = findPosY(obj);
		var x = new getObj(lyr);
		corX=0;
		corY=0;
//		newX=0;
//		newY=0;
		if(bDOMBrowser ==bW3CDOM)
			{
			{
			if (typer=='down') {corX=0+otstupfX; corY=obj.offsetHeight+4+otstupfY;}
			if (typer=='right') {corX=obj.offsetWidth+otstupfX; corY=obj.offsetHeight+4+otstupfY;}
			if (typer=='left') {corX=0-document.getElementById(lyr).offsetWidth+otstupfX; corY=obj.offsetHeight+4-otstupfY;}
			if (typer=='up') {corX=0+otstupfX; corY=-document.getElementById(lyr).offsetHeight+4+otstupfY;}
			document.getElementById(lyr).style.top = newY+corY+'px';
			document.getElementById(lyr).style.left = newX+corX+'px';
			}
			}
		else{
			if (typer=='down') {corX=0+otstupfX; corY=obj.offsetHeight+4+otstupfY;}
			if (typer=='right') {corX=obj.offsetWidth+otstupfX; corY=obj.offsetHeight+4+otstupfY;}
			if (typer=='left') {corX=0-document.getElementById(lyr).offsetWidth+otstupfX; corY=obj.offsetHeight+4-otstupfY;}
			if (typer=='up') {corX=0+otstupfX; corY=-document.getElementById(lyr).offsetHeight+4+otstupfY;}
			x.style.top = newY+corY;
			x.style.left = newX+corX;
			}

}

function setLyr2(obj2,lyr2,typer,otstupfX,otstupfY)
 {
		var new2X = 0;
		var new2Y = 0;
		new2X = findPosX(obj2);
        new2Y = findPosY(obj2);
		var x2 = new getObj(lyr2);
//		cor2X=0;
//		cor2Y=0;
//		newX=0;
//		newY=0;
		if(bDOMBrowser ==bW3CDOM)
			{
			if (typer=='down') {corX=0+otstupfX; corY=obj.offsetHeight+4+otstupfY;}
			if (typer=='right') {corX=obj.offsetWidth+otstupfX; corY=obj.offsetHeight+4+otstupfY;}
			if (typer=='left') {corX=0-document.getElementById(lyr).offsetWidth+otstupfX; corY=obj.offsetHeight+4-otstupfY;}
			if (typer=='up') {corX=0+otstupfX; corY=-document.getElementById(lyr).offsetHeight+4+otstupfY;}
			document.getElementById(lyr).style.top = newY+corY+'px';
			document.getElementById(lyr).style.left = newX+corX+'px';
			}
		else{
			if (typer=='down') {cor2X=0+otstupfX; corY=obj.offsetHeight+4+otstupfY;}
			if (typer=='right')  {cor2X=obj2.offsetWidth+otstupfX+5; cor2Y=otstupfY;}
			if (typer=='left') {corX=0-document.getElementById(lyr).offsetWidth+otstupfX; corY=obj.offsetHeight+4-otstupfY;}
			if (typer=='up') {corX=0+otstupfX; corY=-document.getElementById(lyr).offsetHeight+4+otstupfY;}
//			x2.style.top = new2Y;
			x2.style.top = new2Y+cor2Y;
//			x2.style.left =80;
			x2.style.left = new2X+cor2X;
			}

 }


function popupOn(menu_number,sm_typer,spaceX, spaceY, tpref_menu, tpref_ppmenu, stpref_ppmenu)
 {
	if (typeof(sm_typer)!='undefined'){typer=sm_typer;}
	else typer='right';
	if (typeof(spaceX)!='undefined'){spacefX=spaceX;}
	else spacefX=otstupX;
	if (typeof(spaceY)!='undefined'){spacefY=spaceY;}
	else spacefY=otstupY;
	if (typeof(tpref_menu)!='undefined'){pref_menu=tpref_menu;}
	if (typeof(tpref_ppmenu)!='undefined'){pref_ppmenu=tpref_ppmenu;}
//	alert(tpref_ppmenu);
//	counter('sm1s');
	counter(stpref_ppmenu);
	hideall(menu_count,stpref_ppmenu);
	hideall2(menu_count,tpref_ppmenu);
	counter(tpref_ppmenu);
	hideall(menu_count,tpref_ppmenu);
	hideall2(menu_count,tpref_ppmenu);
	clrtimer();
	setLyr(document.getElementById(pref_menu+menu_number),pref_ppmenu+menu_number,typer,spacefX,spacefY);
	show(menu_number);
 }

function popupOn2(menu_number,sm_typer,spaceX, spaceY, tpref_menu, tpref_ppmenu)
 {
	if (typeof(sm_typer)!='undefined'){typer=sm_typer;}
	else typer='right';
	if (typeof(spaceX)!='undefined'){spacefX=spaceX;}
	else spacefX=otstupX;
	if (typeof(spaceY)!='undefined'){spacefY=spaceY;}
	else spacefY=otstupY;
	if (typeof(tpref_menu)!='undefined'){pref_menu=tpref_menu;}
	if (typeof(tpref_ppmenu)!='undefined'){pref_ppmenu=tpref_ppmenu;}
	counter(tpref_ppmenu);
	hideall(menu_count,tpref_ppmenu);
//    alert(tpref_ppmenu);
//	counter('sm1s');
//	hideall(menu_count,'sm1s');
	clrtimer();
	clrtimer2();
	setLyr2(document.getElementById(tpref_menu+menu_number),tpref_ppmenu+menu_number,typer,spacefX,spacefY);
	show(menu_number);

	//alert(pref_menu);
 }



function clr()
{
	clrtimer();
//		alert('clr');
	clrtimer2();

}
function popupOff(pf)
 {
	counter(pf);
	stimer(menu_count,pf);
 }
function popupOff2(pff1,pff2)
 {
	popupOff(pff1);
	counter(pff2);
	stimer2(menu_count,pff2);
	//pff2='sm';
 }
function onClickHide(tpref_ppmenu)
 {
	counter(tpref_ppmenu);
	hideall(menu_count,tpref_ppmenu);
	hideall2(menu_count,tpref_ppmenu);
	sddd=menu_count;
	for (i=1; i<sddd; i++){
	counter(menu_count,tpref_ppmenu+i+'s');
	hideall(menu_count,tpref_ppmenu+i+'s');
    }
 }