var NN4=document.layers?true:false;
var NN6=(navigator.appName == "Netscape")&&!NN4;
var layerRef=NN4?"document":NN6?"":"document.all";
var styleRef=NN4?"":".style";
var suff=NN4?"nn4":"";

function getElementById(anId){
	if (anId)
		if (NN4){
			var objRes=eval("window.document."+anId);
			if (objRes)
				return objRes;
			objRes=eval(document.anchors[anId]);
			if (objRes)
				return objRes;
			for(var i=0;i<document.layers.length;i++)
				if (!objRes){
					objRes=eval(document.layers[i].document.anchors[anId]);
					if (objRes)
						objRes.parent=eval(document.layers[i]);
				}
			return objRes;
		}
		else
			return window.document.getElementById(anId);
	else
		return null;
}
function getCoordsById(anId){
	var obj=getElementById(anId);
	return getCoords(obj)
}
function getCoordsByIdNN4(anId){
	var obj=getElementById(anId);
	return getCoordsNN4(obj)
}

function getCoords(anObj){

	var objRes=new Object();
	objRes.left=objRes.top=objRes.width=objRes.height=0;
	if(anObj!=null)
	{
	with(objRes){
		width+=anObj.offsetWidth;
		height+=anObj.offsetHeight;
		for(var i=anObj;i!=null;i=i.offsetParent){
			left+=i.offsetLeft;
			top+=i.offsetTop;
		}
	}}else{alert(anObj);}
	return objRes;
}
function getCoordsNN4(anObj, anEndObj){
	var objRes=new Object();
	objRes.left=objRes.top=objRes.width=objRes.height=0;
	with(objRes){
		left=anObj.x;
		top=anObj.y;
		width=anEndObj.x-left;
		height=anEndObj.y-top;
		if (height==0) height=14;
		if (anObj.parent){
			left+=anObj.parent.x;
			top+=anObj.parent.y;
		}
	}        
	return objRes;
}
function getPadCoordsNN4(anObj){
	var objRes=new Object();
	objRes.left=objRes.top=objRes.width=objRes.height=0;
	with(objRes){
		left=anObj.left;
		top=anObj.top;
		width=anObj.clip.width;
		height=anObj.clip.height;
	}
	return objRes;
}

function showMenu(strMenuId, numLev){

	var objItem=getElementById(strMenuId+"item"+suff);
	var objItemNN4=getElementById(strMenuId+"itemnn4");
	var objEnd=getElementById(strMenuId+"itemendnn4");
	var objPad=getElementById(strMenuId+"pad");

	var objCoords=NN4?getCoordsNN4(objItem,objEnd):getCoords(objItem);
	var objPadCoords=NN4?getPadCoordsNN4(objPad):getCoords(objPad);
	
	var screenH=screen.availHeight;
  var screenW=screen.availWidth;
	var n=objCoords.left+objPadCoords.width*numLev;
	
	
	
	if(n>screenW)
		  eval("objPad"+styleRef+".left="+parseInt(screenW-(objPadCoords.width*numLev)-15));
	else
  {
    if (numLev==1)
	    eval("objPad"+styleRef+".left="+parseInt(objCoords.left-5));
	  else
      eval("objPad"+styleRef+".left="+(objCoords.left+objCoords.width-1));
	}
  //if(!NN6) objItemNN4.className='act';
    
	if (numLev==1)
	  eval("objPad"+styleRef+".top="+(objCoords.top+17));
	else
		eval("objPad"+styleRef+".top="+(objCoords.top));

	eval("objPad"+styleRef+".visibility='visible'");
}

function hideMenu(strMenuId){
	var objItem=getElementById(strMenuId+"item"+suff);
	var objPad=getElementById(strMenuId+"pad");
	eval("objPad"+styleRef+".visibility='hidden'");

	var objItemNN4=getElementById(strMenuId+"itemnn4");
  var objItem=getElementById(strMenuId+"item");
  //if(!NN6) objItemNN4.className='';
}

var Hist=new Array(), HistLen=0;

function CutHist(MenuID, lbForce){
	var f=0;
  for(var i=1;i<=HistLen;++i)
    if (Hist[i]==MenuID)
      f=(lbForce)?(i-1):i;
  HistLen=f;
}

function AddToHist(MenuID){
	HistLen+=1;
	Hist[HistLen]=MenuID;
}


function ShowHist(){
	for(var i=1;i<=HistLen;++i)
		showMenu(Hist[i], i);
}

function HideHist(){
	for(var i=1;i<=HistLen;++i)
		hideMenu(Hist[i]);
}


var gDesc="";

function DeferredOverItem(strCurr,strDesc){
  HideHist();
  CutHist(strCurr);
  AddToHist(strDesc);
  ShowHist();
  
  gDesc=strDesc;
}

function DeferredOutItem(strDesc){
  HideHist();
  CutHist(strDesc, true);
  ShowHist();
	hideMenu(strDesc);
	gDesc="";
}

function DeferredOverMenu(strCurr){
  HideHist();
  CutHist(strCurr);
  if (gDesc)
    AddToHist(gDesc);
  ShowHist();
}

function DeferredOutMenu(){
  HideHist();
}


var gnActTimerID=0, gtActTimeStart=0, gnActDelay=0, gcActProcStr="";
function clearActTimer(){
	if (gnActTimerID){
		clearTimeout(gnActTimerID);
		gnActTimerID=0;
		gtActTimeStart=0;
		gcActProcStr="";
	}
}

function setActTimer(lcCommand, lnDelay){	
	clearActTimer();
	lcCommand+="; clearActTimer();";
	gtActTimeStart=new Date();
	gnActDelay=lnDelay;
	gcActProcStr=lcCommand;	
	return setTimeout(lcCommand, lnDelay);
}

function processTimer(){
	if (gtActTimeStart){
		if (((new Date())-gtActTimeStart)>=gnActDelay){
			if ((typeof(gcActProcStr)=="string")&&gcActProcStr){
				eval(gcActProcStr);
			}
			clearActTimer()
		}
	}
}


var gnDelayIn=300, gnDelayOut=500;
function OverItem(strCurr,strDesc,lbForce){
	if (lbForce){

		clearActTimer();
		DeferredOverItem(strCurr,strDesc);
	}else
		gnActTimerID=setActTimer("DeferredOverItem('"+strCurr+"','"+strDesc+"')", gnDelayIn);
  gDesc=strDesc;
}

function OutItem(strDesc){
	gnActTimerID=setActTimer("DeferredOutItem('"+strDesc+"')", gnDelayOut);
  gDesc="";
 flag=true
 return flag
}

function OverMenu(strCurr){
	gnActTimerID=setActTimer("DeferredOverMenu('"+strCurr+"')", gnDelayIn);
}

function OutMenu(){
	gnActTimerID=setActTimer("DeferredOutMenu()", gnDelayOut);
}
