var IE=0, NS4=0, NS6=0, LIN=0, KO=0, OP=0;
var navN=navigator.appName;
if(navN.indexOf('Netscape')>=0) {
  if(navigator.appVersion.substring(0,1)>=5 ) {
    NS6=1;
    if(navigator.appVersion.indexOf('X11')>=0) LIN=1;
  }
  else NS4=1;
} else if(navN.indexOf('Konqueror')>=0) KO=1;
else if(navN.indexOf('Opera')>=0) OP=1;
else IE=1;

var smLeft=23; // min left offset
var smLeft1=195; // min left offset
var smTop=19;  // min top offset
var smTop1=0;  // min top offset
var smNext=120; // offset to next level
var smWidth=130; // submenu div width
var smTime=500; //if(KO) smTime=1500;
var smOpened=new Array();
var smOpnLen=-1;
var smClsTimer=-1;
var smMold=''; // save id of marked '>'
var hglted=null;//current highlighted item

if(NS6){
smTop=143;
smTop1=150;
smLeft=19;
smLeft1=205;
}

if(OP){
smTop=0;
smTop1=0;
smLeft=0;
smLeft1=0;
}

function props(e) { p='';for(ep in e) p+=ep+"="+e[ep]+"\n"; alert(p);}

var L,W;
// get left scroll and window width
function getlpos() {
  if(IE) {
    dBd=document.body;
    L=dBd.scrollLeft;
    W=dBd.clientWidth;
  } else {
    L=window.pageXOffset;
    W=window.innerWidth;
  }
}

function turnOn(sm,lvl,link) {

  temp_sm=sm;
  smTimerOff();
  if(smIsOpn(sm)) return;// allready opened
  turnOff(sm);
  // parent DIV
  sparent=smOpnLast();
  if(sparent) { 
    sprn=smGetObj(sparent);
    parent_y=parseInt(sprn.top);
    parent_x=parseInt(sprn.left);
  }
  // DIV offsets
    kkk=sm.substring(2,1);
    if(kkk=='s') leftPlus=smLeft1;
    else         leftPlus=smLeft;
    if(kkk=='s') topPlus=smTop1;
    else         topPlus=smTop;
  if(lvl) {
    leftPlus+=smNext;
    topPlus=0;
  }
  if(IE || KO) {
    Y=document.body.scrollTop+event.clientY-event.offsetY +topPlus-1;
    X=document.body.scrollLeft+event.clientX-event.offsetX +leftPlus-24;
		if(KO) {Y+=3}
  } else if(LIN) { // Mozilla
    X=lvl*smNext;
    Y=lvl?0:smTop;
    lp=link.offsetParent;
		i=10; // защита от глубины
		while(lp && i){
			X+=lp.offsetLeft;
			Y+=lp.offsetTop;
			lp=lp.offsetParent;
			i--;
		}
  } else if(NS6) {
		dy=topPlus;
		dx=leftPlus-smLeft;
		if(link.offsetParent!=null) {
			dy+=link.offsetParent.offsetTop;
			dx+=link.offsetParent.offsetLeft;
		}
		Y=dy+link.offsetTop;
		X=dx+link.offsetLeft;
  } else if(NS4) {
    dy=topPlus;
    dx=leftPlus-smLeft;
    if(sparent) { 
      dy+=parent_y;
      dx+=parent_x;
    }     
    Y=dy+link.y;
    X=dx+link.x;
  } else if(OP) {
    so=smGetObj(sparent);
    //Y=event.clientY + topPlus - 2;
    Y=document.body.scrollTop+event.clientY-event.offsetY +topPlus+0;
    //if(so) X=parseInt(so.left) +24 +leftPlus;
    //else X=event.clientX +leftPlus;
    if(so) X=parseInt(so.left) +165 +leftPlus;
    else   X=document.body.scrollLeft+event.clientX-event.offsetX +leftPlus+165;
  } else {
    Y=75;
    X=leftPlus;
  }
  // get current left scroll and window width
  getlpos();
  leftside=L+W;
  if(X+smWidth > leftside) { // DIV will cross right border
    X=leftside-smWidth;
  }
  // turn on DIV
  so=smGetObj(sm);
  if(so) {
    smOpnPush(sm);
    so.top=Y;
    so.left=X;
    so.visibility='visible';
  }

}

function turnOn2(sm,lvl,link) {

  temp_sm=sm;
  smTimerOff();
  if(smIsOpn(sm)) return;// allready opened
  turnOff(sm);
  // parent DIV
  sparent=smOpnLast();
  if(sparent) { 
    sprn=smGetObj(sparent);
    parent_y=parseInt(sprn.top);
    parent_x=parseInt(sprn.left);
  }
  // DIV offsets
    kkk=sm.substring(2,1);
    if(kkk=='s') leftPlus=smLeft1;
    else         leftPlus=smLeft;
    if(kkk=='s') topPlus=smTop1;
    else         topPlus=smTop;
  if(lvl) {
    leftPlus+=smNext;
    topPlus=0;
  }
  if(IE || KO) {
    Y=document.body.scrollTop+event.clientY-event.offsetY +topPlus-1;
    X=document.body.scrollLeft+event.clientX-event.offsetX +leftPlus-24;
		if(KO) {Y+=3}
  } else if(LIN) { // Mozilla
    X=lvl*smNext;
    Y=lvl?0:smTop;
    lp=link.offsetParent;
		i=10; // защита от глубины
		while(lp && i){
			X+=lp.offsetLeft;
			Y+=lp.offsetTop;
			lp=lp.offsetParent;
			i--;
		}
  } else if(NS6) {
		dy=topPlus;
		dx=leftPlus-smLeft;
		if(link.offsetParent!=null) {
			dy+=link.offsetParent.offsetTop;
			dx+=link.offsetParent.offsetLeft+30;
		}
		Y=dy+link.offsetTop;
		X=dx+link.offsetLeft;
  } else if(NS4) {
    dy=topPlus;
    dx=leftPlus-smLeft;
    if(sparent) { 
      dy+=parent_y;
      dx+=parent_x;
    }     
    Y=dy+link.y;
    X=dx+link.x;
  } else if(OP) {
    so=smGetObj(sparent);
    //Y=event.clientY + topPlus - 2;
    Y=document.body.scrollTop+event.clientY-event.offsetY +topPlus+20;
    //if(so) X=parseInt(so.left) +24 +leftPlus;
    //else X=event.clientX +leftPlus;
    if(so) X=parseInt(so.left) +24 +leftPlus;
    else   X=document.body.scrollLeft+event.clientX-event.offsetX +leftPlus+24;
  } else {
    Y=75;
    X=leftPlus;
  }
  // get current left scroll and window width
  getlpos();
  leftside=L+W;
  if(X+smWidth > leftside) { // DIV will cross right border
    X=leftside-smWidth;
  }
  // turn on DIV
  so=smGetObj(sm);
  if(so) {
    smOpnPush(sm);
    so.top=Y;
    so.left=X;
    so.visibility='visible';
  }

}

function smOpnPush(sm) { smOpnLen++; smOpened[smOpnLen]=sm; return sm;}
function smOpnPop() { sm=''; if(smOpnLen>=0) {sm=smOpened[smOpnLen]; smOpnLen--;} return sm;}
function smOpnLast() { sm=''; if(smOpnLen>=0) sm=smOpened[smOpnLen]; return sm;}
function smIsOpn(sm) {  for(i=0;i<=smOpnLen;i++) {if(smOpened[i]==sm) return true;} return false;}

function turnOff(sm) {
  if(sm) sparent=sm.substring(0,sm.lastIndexOf('_')); // parent code
  else sparent='';
   slast=smOpnLast(); // goto another branch? Close all!
   if(slast && sparent && slast.indexOf(sparent)<0 ) sparent='';
  while(smOpened.length) {
    slast=smOpnLast();
    smM='m'+slast;
    if(slast.length>sparent.length && slast!=sparent) { // need close
      smOpnPop();
      so=smGetObj(slast);
      if(so) {
        so.visibility='hidden';
        sm=smGetObj(smM);
        if(sm) sm.visibility='hidden';
				if(hglted) lbg(hglted,0)
      }
    } else {
      break;
    }
  }
  smTimerOff();
}
function smTimerOn() { smTimerOff(); smClsTimer=setTimeout('turnOff()',smTime); }
function smTimerOff() { if(smClsTimer>=0) {clearTimeout(smClsTimer); smClsTimer=-1;} }

function smGetObj(sm) { // get DIV object by ID
  o='';
  if(NS6||OP) {
    o=document.getElementById(sm);
    if(o) o=o.style;
  } else if(NS4) {
    o=document.layers[sm];
  } else {
    o=document.all(sm);
    if(o) o=o.style;
  }
  return o;
}