// DHTML menu service. (C) MSerg, Dec 2001. mserg@galaradio.com
//-------------------------------------------------------------
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=90;  // left +offset for lvl 0
var smTop0 =-7; // min top offset
var smTop  =-13;// min top offset
var smNext=188; // offset to next level
var smWidth=200; // submenu div width
var smTime=1000; //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

function props(e) { p='';for(ep in e) p+=ep+"="+e[ep]+"\n"; alert(p);}
//props(link);

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) {
  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
	leftPlus=smNext;
	topPlus=smTop;
  if(!lvl) {
		leftPlus+=smLeft;
		topPlus=smTop0;
	}
  if(IE) {
		topPlus-=2;
		leftPlus-=4;
	}
	if(IE||KO||NS6|OP) {
		if(NS6) topPlus+=1;
		if(IE) topPlus+=3;
		dx=0;
		dy=topPlus;
    lp=link.offsetParent;
		i=10; // защита от глубины
		while(lp && i){
			dx+=lp.offsetLeft;
			dy+=lp.offsetTop;
			lp=lp.offsetParent;
			i--;
		}
		Y=dy+link.offsetTop;
  } else if(NS4) { // must die!
		dx=lvl*smNext;
    dy=topPlus;
    if(sparent) dy+=parent_y;
    Y=dy+link.y;
  } else {
		dx=lvl*smNext;
    Y=200;
  }
	if(lvl==0) dx+=smLeft;
	X=dx+smNext; //	X=smLeft+(lvl+1)*smNext;
  // 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;
}

function lbg(obj,n) {
	if(n>0) {
		hglted=obj;
		obj.style.backgroundColor='#66ccff';
	} else {
		hglted=null;
		obj.style.backgroundColor='#61B0C7';
	}
}

