var lngDocumentWidth=1004, lngDocumentHeight=600;
var alibMenuIDs=[];
var blnMenusSupported=(Nav.type=='N' && Nav.version>=5) || (Nav.type=='E' && Nav.version>=5);
var blnMenusEnabled=false;
var strObjectBase='libMenu';
var strClassName='libMenu';
var objMenuTracker=new clsMenuTracker(); objMenuTracker.objTimerInterval=setInterval('objMenuTracker.HandlerUpdate()',100);
var objLastSetMenu=null;
if(!document.getElementById) document.getElementById=document.all;

function cMenu(pstrKey,plngID) {
	this.lngID=plngID;
	this.ID=(new String(pstrKey)).concat('x',new String(plngID));
	this.options=[];
	this.AddOption=cMenu_AddOption;
	this.Build=cMenu_Build;
	this.Relocate=cMenu_Relocate;
	this.Show=cMenu_Show;
	this.X=0;
	this.Y=0;
	eval('alibMenuIDs.ID' + this.ID + '=this');
	this.ParentID = null;
	this.objRow	  = null;
	this.objMenu  = null;
	this.objHook  = null;
}

function cMenu_AddOption(pstrCaption, pstrLink) {
	var lintNew=this.options.length, lobjOption, lobjSubMenu=null;
	if(arguments.length>=3) {
		lobjSubMenu=arguments[2];
		lobjSubMenu.ParentID=this.ID;
	}
	lobjOption=new cMenu_Option(pstrCaption, pstrLink, lobjSubMenu);
	return this.options[lintNew]=lobjOption;
}

function cMenu_Build() {
	var lstrRow, lintOption, lstrCaption, lstrLink, lstrLinkJS, lobjOption, lobjSubMenu, lintX, lintY, lstrRowID;
	var lstrTRClass;
	lstrRowID=(this.ParentID != null ? strObjectBase + 'LightS' + this.ID : '');
	document.write('<DIV ID="' + strObjectBase + 'ID' + this.ID + '" Class="' + strClassName + 'Container" Style="position:absolute; visibility:hidden;" OnMouseOut="SetMenu(\'' + this.ID + '\',false); SetRow(\'' + lstrRowID + '\',false)" OnMouseOver="SetMenu(\'' + this.ID + '\',true); SetRow(\'' + lstrRowID + '\',true)">');
	document.write('<TABLE Class="' + strClassName + '" CellSpacing=0 CellPadding=0 Border=0 BGColor=white>');
	for(lintOption=0;lintOption<this.options.length;lintOption++) {
		lobjOption=this.options[lintOption]
		lstrCaption=lobjOption.Caption;
		lstrLink='<A HRef="' + lobjOption.Link + '">';
		lstrLinkJS=( lobjOption.Link=='' ? '' : 'location.href=\'' + lobjOption.Link + '\'' );
		lobjSubMenu=lobjOption.SubMenu
		lstrTRClass=(lintOption==this.options.length-1 ? 'Last' : '');
		if(lobjSubMenu==null) {
			lstrRowID=strObjectBase + 'Light' + this.ID + '-' + lintOption;
			lstrRow='<TR Class="'+lstrTRClass+'"><TD>';
			lstrRow+='<TABLE ID="' + lstrRowID + '" OnClick="' + lstrLinkJS + '" OnMouseOver="SetMenu(\'' + this.ID + '\',true); SetRow(\'' + lstrRowID + '\',true)" OnMouseOut="SetRow(\'' + lstrRowID + '\',false)" CellSpacing=0 CellPadding=1 Border=0 Width="100%"><TR><TD NoWrap Class=Caption>';
//			lstrRow+=lstrLink + lstrCaption + '</A>';
			lstrRow+='<A>' + lstrCaption + '</A>';
			lstrRow+='</TD><TD Class=Icon>&nbsp;</TD></TR></TABLE>';
			lstrRow+='</TD></TR>';
		}
		else {
			lstrRowID=strObjectBase + 'LightS' + lobjSubMenu.ID;
			lstrRow='<TR Class="'+lstrTRClass+'"><TD ID="' + strObjectBase + 'Hook' + lobjSubMenu.ID + '" OnMouseOver="SetMenu(\'' + lobjSubMenu.ID + '\',true); SetRow(\'' + lstrRowID + '\',true)" OnMouseOut="SetMenu(\'' + lobjSubMenu.ID + '\',false); SetRow(\'' + lstrRowID + '\',false)">';
			lstrRow+='<TABLE ID="' + lstrRowID + '" OnClick="' + lstrLinkJS + '" CellSpacing=0 CellPadding=1 Border=0 Width="100%"><TR><TD NoWrap Class=Caption>';
//			lstrRow+=lstrLink + lstrCaption + '</A>';
			lstrRow+='<A>' + lstrCaption + '</A>';
			lstrRow+='</TD><TD Align=Right Class=Icon>';
			lstrRow+='&nbsp;' + '<IMG Src="images/arrow_r.gif" Width=4 Height=8 Border=0>';
			lstrRow+='</TD></TR></TABLE>';
			lstrRow+='</TD></TR>';
		}
		document.write(lstrRow);
	}
	document.write('</TABLE>');
	document.write('</DIV>');
	var llngRowHeight;
	for(lintOption=0;lintOption<this.options.length;lintOption++) {
		lobjOption=this.options[lintOption];
		lobjSubMenu=lobjOption.SubMenu;
		if(lobjSubMenu!=null) lobjSubMenu.Build();
	}
}

function cMenu_Relocate() {
	var lintOption, lobjOption, lobjSubMenu, lintX, lintY, llngRowHeight, lobjTable;
	var lintParentX = (arguments.length >= 3 && arguments[2]!=null ? arguments[2] : -1 );
	var lintOffsetX = 10;
	if(arguments.length>=2) {
		this.X=arguments[0];
		this.Y=arguments[1];
	}
	if(arguments.length>=4) lintOffsetX=arguments[3];
	lobjTable=document.getElementById(strObjectBase + 'ID' + this.ID);
	if(this.X + lintOffsetX + lobjTable.offsetWidth > lngDocumentWidth)
		this.X=( lintParentX>=0 ? lintParentX + lintOffsetX : lngDocumentWidth ) - lobjTable.offsetWidth
	else
		this.X-=lintOffsetX;
	if(this.X<0) this.X=0;
	if(this.Y + lobjTable.offsetHeight > lngDocumentHeight)
		this.Y=lngDocumentHeight - lobjTable.offsetHeight;
	lobjTable.style.left = this.X + 'px';
	lobjTable.style.top  = this.Y + 'px';
	lobjTable.style.zIndex=2;
	for(lintOption=0;lintOption<this.options.length;lintOption++) {
		lobjOption=this.options[lintOption];
		lobjSubMenu=lobjOption.SubMenu;
		if(lobjSubMenu!=null) {
			llngRowHeight=document.getElementById(strObjectBase + 'Hook' + lobjSubMenu.ID).offsetHeight;
			lintX=this.X+document.getElementById(strObjectBase + 'ID' + this.ID).offsetWidth;
			lintY=this.Y+llngRowHeight*lintOption;
			lobjSubMenu.Relocate(lintX,lintY+2,this.X);
		}
	}
	this.objMenu = document.getElementById(strObjectBase + 'ID' + this.ID);
	this.objHook = document.getElementById(strObjectBase + 'Hook' + this.ID);
}

function cMenu_Show() {
	this.objMenu.style.visibility='visible';
}

function SetRow(pstrID, pblnStatus) {
	if(blnMenusSupported && pstrID!='') {
		var lobjRow=document.getElementById(pstrID);
		if(lobjRow) lobjRow.className = ( pblnStatus ? 'On' : '' );
	}
}

function SetMenu(pstrKeyID, pblnVisible, pblnReallyHide) {
	if(!blnMenusSupported || !blnMenusEnabled) return;
	if(pblnReallyHide==undefined) pblnReallyHide=false;
	var lobj=eval('alibMenuIDs.ID' + pstrKeyID);
	if(lobj) {
		var lobjMenu = lobj.objMenu;
		var lobjHook = lobj.objHook;
		if(lobjMenu && lobjHook) {
			if(pblnVisible) {
				objMenuTracker.Add(pstrKeyID);
				if(lobjMenu.filters) {
					if(lobjMenu.style.visibility!='visible') {
						objMenuTracker.Stop();
						lobjMenu.style.filter='progid:DXImageTransform.Microsoft.Zigzag(GridSizeX=16,GridSizeY=16,enabled=0)';
						lobjMenu.filters[0].apply();
						lobjMenu.style.visibility='visible';
						lobjMenu.style.zIndex=1;
						lobjMenu.filters[0].play(0.3);
					}
				} else {
					lobjMenu.style.visibility='visible';
				}
//				objMenuTracker.Count(1);
			} else {
				if(pblnReallyHide) {
					//objMenuTracker.objTimerTimeout=setTimeout('objMenuTracker.HandlerClear()',1000);
					if(lobjMenu.filters) {
						if(lobjMenu.style.visibility!='hidden') {
							lobjMenu.style.filter='progid:DXImageTransform.Microsoft.Fade()';
							lobjMenu.style.visibility='visible';
							lobjMenu.filters[0].apply();
							lobjMenu.style.visibility='hidden';
							lobjMenu.filters[0].play(0.3);
						}
					} else {
						lobjMenu.style.visibility='hidden';
					}
				} else {
//					alert('x');
					objMenuTracker.Remove();
//					objMenuTracker.Count(-1);
				}
			}
		}
	}
}

function cMenu_Option(pstrCaption, pstrLink, pobjSubMenu) {
	this.Caption=pstrCaption;
	this.Link=pstrLink;
	this.SubMenu=pobjSubMenu;
	this.Menu=pobjSubMenu;
}

function globalX(pobj) {
	var llngLeft=pobj.offsetLeft;
	if(pobj.offsetParent)
		llngLeft+=globalX(pobj.offsetParent);
	return llngLeft;
}

function globalY(pobj) {
	var llngTop=pobj.offsetTop;
	if(pobj.offsetParent)
		llngTop+=globalY(pobj.offsetParent);
	return llngTop;
}
// --------------------------------------------------
function clsMenuTracker() {
	this.strKeys='|';
	this.strTreeKeys='|';
	this.Add=clsMenuTracker_Add;
	this.Check=clsMenuTracker_Check;
	this.Remove=clsMenuTracker_Remove;
	this.Stop=clsMenuTracker_Stop;
	this.Count=clsMenuTracker_Count;
	this.HandlerUpdate=clsMenuTracker_HandlerUpdate;
	this.HandlerClear=clsMenuTracker_HandlerClear;
	this.HandlerFilterChange=clsMenuTracker_HandlerFilterChange;
	this.intSum=0;
	this.objTimerTimeout=null;
}
function clsMenuTracker_Add(pstrKey) {
	var lobjNode, lstrNodeKey, lobjMenu;
	var lstrTreeKeys="|";
	lstrNodeKey=pstrKey;
	lobjMenu=eval('alibMenuIDs.ID' + lstrNodeKey); lobjMenu=lobjMenu.objMenu;
	lobjMenu.onfilterchange=this.HandlerFilterChange;
	while(lstrNodeKey!=null) {
		lstrTreeKeys='|'+lstrNodeKey+lstrTreeKeys;
		lobjNode=eval('alibMenuIDs.ID' + lstrNodeKey);
		lstrNodeKey=lobjNode.ParentID;
	}
	if(this.strTreeKeys.indexOf(lstrTreeKeys)!=0) {
		this.strTreeKeys=lstrTreeKeys;
		lstrNodeKey=pstrKey;
		while(lstrNodeKey!=null) {
			if(!this.Check(lstrNodeKey,this.strKeys))
				this.strKeys+=lstrNodeKey+'|';
			lobjNode=eval('alibMenuIDs.ID' + lstrNodeKey);
			lstrNodeKey=lobjNode.ParentID;
		}
	}
//	clearTimeout(this.objTimerTimeout);
	objMenuTracker.Count(1);
}
function clsMenuTracker_Remove() {
//	this.strKeys=this.strKeys.replace('|'+pstrKey+'|','|');
//	this.strTreeKeys='|';
//	this.objTimerTimeout=setTimeout('objMenuTracker.HandlerClear()',1000);
	objMenuTracker.Count(-1);
}
function clsMenuTracker_Check(pstrKey,pstrKeys) {
	return pstrKeys.indexOf('|'+pstrKey+'|')>=0;
}
function clsMenuTracker_Stop() {
	var lobjMenu, lstrKey
	for(var lstrIdx in alibMenuIDs) {
		lstrKey=alibMenuIDs[lstrIdx].ID;
		lobjMenu=alibMenuIDs[lstrIdx].objMenu;
		if(lobjMenu && !objMenuTracker.Check(lstrKey,this.strTreeKeys)) {
			if(lobjMenu.filters && lobjMenu.filters.length>0) {
				if(lobjMenu.filters[0].status) {
					lobjMenu.filters[0].stop();
					lobjMenu.filters[0].apply();
					lobjMenu.style.zIndex=0;
//					lobjMenu.style.visibility='hidden';
//					lobjMenu.filters[0].play(0);
				}
//				lobjMenu.style.visibility='visible';
//				lobjMenu.style.filter='progid:DXImageTransform.Microsoft.Fade()';
//
//				lobjMenu.filters[0].apply();
//				lobjMenu.style.visibility='hidden';
//				lobjMenu.filters[0].play(0.3);
			}
//			lobjMenu.style.filter='';
			lobjMenu.style.visibility='hidden';	// Anula transparencia, preferible ejecutar en diferido con timer al llegar transparencia a 100%.
		}
	}
}
function clsMenuTracker_HandlerUpdate() {
	this.Stop();
	for(var lstrIdx in alibMenuIDs) {
		lstrKey=alibMenuIDs[lstrIdx].ID;
		if(!this.Check(lstrKey,this.strTreeKeys)) {
//			this.Remove(lstrKey);
			SetMenu(lstrKey,false,true);
		}
	}
}
function clsMenuTracker_Count(pintSum) {
	if(this.objTimerTimeout!=null) {
		clearTimeout(this.objTimerTimeout);
		this.objTimerTimeout=null;
	}
	if(pintSum<0) {
		this.intSum=0;
		this.objTimerTimeout=setTimeout('objMenuTracker.HandlerClear()',1000);
	} else {
		this.intSum+=pintSum;
	}
//document.title=this.intSum;
}
function clsMenuTracker_HandlerClear() {
	this.objTimerTimeout=null;
	this.strTreeKeys='|';
//	this.Stop();
//	this.HandlerUpdate();
	for(var lstrIdx in alibMenuIDs) {
		lstrKey=alibMenuIDs[lstrIdx].ID;
		if(!this.Check(lstrKey,this.strTreeKeys)) {
//			this.Remove(lstrKey);
			SetMenu(lstrKey,false);
		}
	}
}
function clsMenuTracker_HandlerFilterChange() {
//	objMenuTracker.Stop();
}