	var AgntUsr=navigator.userAgent.toLowerCase();
	var AppVer=navigator.appVersion.toLowerCase();
	var DomYes=document.getElementById?1:0;
	var NavYes=AgntUsr.indexOf('mozilla')!=-1&&AgntUsr.indexOf('compatible')==-1?1:0;
	var ExpYes=AgntUsr.indexOf('msie')!=-1?1:0;
	var Opr=AgntUsr.indexOf('opera')!=-1?1:0;
	var Opr6orless=window.opera && navigator.userAgent.search(/opera.[1-6]/i)!=-1 //DynamicDrive.com added code
	if(Opr){NavYes=1;ExpYes=0;}
	var DomNav=DomYes&&NavYes?1:0;
 	var DomExp=DomYes&&ExpYes?1:0;
	var Nav4=NavYes&&!DomYes&&document.layers?1:0;
	var Exp4=ExpYes&&!DomYes&&document.all?1:0;
	var Exp6Plus=(AppVer.indexOf("msie 6")!= -1||AppVer.indexOf("msie 7")!= -1)?1:0
	var PosStrt=(NavYes||ExpYes||Opr)&&!Opr6orless?1:0;
	var P_X=DomYes?"px":"",FHtml=null,ScHtml=null,FCmplnt=0,SCmplnt=0;
	var FrstLoc,ScLoc,DcLoc;
	var ScWinWdth,ScWinHght,FrstWinWdth,FrstWinHght;
	var ScLdAgainWin;
	var FirstColPos,SecColPos,DocColPos;
	var RcrsLvl=0;
	var FrstCreat=1,Loadd=0,Creatd=0,IniFlg,AcrssFrms=1;
	var FrstCntnr=null,CurrntOvr=null,CloseTmr=null;
	var CntrTxt,TxtClose,ImgStr;
	var Ztop=100;
	var ShwFlg=0;
	var M_StrtTp=StartTop,M_StrtLft=StartLeft;
	var StaticPos=0;
	var M_Hide=Nav4?'hide':'hidden';
	var M_Show=Nav4?'show':'visible';
	var Par=parent.frames[0]&&FirstLineFrame!=SecLineFrame?parent:window;
	var Doc=Par.document;
	var Bod=Doc.body;
	var Trigger=NavYes&&!Opr?Par:Bod;

	MenuTextCentered=MenuTextCentered==1||MenuTextCentered=='center'?'center':MenuTextCentered==0||MenuTextCentered!='right'?'left':'right';
	WbMstrAlrts=["Item not defined: ","Item needs height: ","Item needs width: "];

	if(Trigger.onload)Dummy=Trigger.onload;
	Trigger.onload=Go;

function Dummy(){return}

function CnclSlct(){return false}

/*********************************************************************************
  Function Name:		RePos()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			RePos() function repositions the menu once the mouse goes
						out of the menu.
***********************************************************************************/

function RePos()
{
	FrstWinWdth=ExpYes?FCmplnt?FHtml.clientWidth:FrstLoc.document.body.clientWidth:FrstLoc.innerWidth;
	FrstWinHght=ExpYes?FCmplnt?FHtml.clientHeight:FrstLoc.document.body.clientHeight:FrstLoc.innerHeight;
	ScWinWdth=ExpYes?SCmplnt?ScHtml.clientWidth:ScLoc.document.body.clientWidth:ScLoc.innerWidth;
	ScWinHght=ExpYes?SCmplnt?ScHtml.clientHeight:ScLoc.document.body.clientHeight:ScLoc.innerHeight;
	
	if(MenuCentered=='justify'&&FirstLineHorizontal){
		FrstCntnr.style.width=FrstWinWdth+P_X;
		var LftXtra=(DomNav&&!Opr)||FCmplnt?LeftPaddng:0;
		ClcJus();
		var P=FrstCntnr.FrstMbr,W=Menu1[5],i;
		for(i=0;i<NoOffFirstLineMenus;i++){
			P.style.width=W+P_X;P=P.PrvMbr
		}
	}
	StaticPos=-1;
	if(TargetLoc)
		ClcTrgt();
	if(MenuCentered)
		ClcLft();
	if(MenuVerticalCentered)
		ClcTp();
	PosMenu(FrstCntnr,StartTop,StartLeft)
}

/*********************************************************************************
  Function Name:		UnLoaded()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			UnLoaded() function unloades the menu once the mouse goes
						out of the menu and hides the drop down list.
***********************************************************************************/

function UnLoaded()
{
	if(CloseTmr)clearTimeout(CloseTmr);
	Loadd=0; Creatd=0;
	if(HideTop){
		var FCStyle=Nav4?FrstCntnr:FrstCntnr.style;
		FCStyle.visibility=M_Hide
	}
}

/*********************************************************************************
  Function Name:		ReDoWhole()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			ReDoWhole() function checks whether the screen(window) width 
						and hight are equal to the screen location and reloads the
						location of the document.
***********************************************************************************/

function ReDoWhole()
{
	if(ScWinWdth!=ScLoc.innerWidth||ScWinHght!=ScLoc.innerHeight||FrstWinWdth!=FrstLoc.innerWidth||FrstWinHght!=FrstLoc.innerHeight)
		Doc.location.reload()
}

/*********************************************************************************
  Function Name:		Check()
  Parameters Passed:	WMnu - Menus to display in the window.
						NoOf - Number of menu items.
  Return Value:			true - if the number of menu items passed are equal to the 
							   array items.
					    false - otherwise.
  Description:			Check() function checks whether the number of items 
						passed are equal to the number of array items of menu.
***********************************************************************************/

function Check(WMnu,NoOf)
{
	var i,array,ArrayLoc;
	ArrayLoc=parent.frames[0]?parent.frames[FirstLineFrame]:self;
	for(i=0;i<NoOf;i++){
		array=WMnu+eval(i+1);
		if(!ArrayLoc[array]){
			WbMstrAlrt(0,array); return false
		}
		if(i==0){	
			if(!ArrayLoc[array][4]){
				WbMstrAlrt(1,array); return false
			}
			if(!ArrayLoc[array][5]){
				WbMstrAlrt(2,array); return false
			}
		}
		if(ArrayLoc[array][3])if(!Check(array+'_',ArrayLoc[array][3])) 
			return false
	}
	return true
}

function WbMstrAlrt(No,Xtra)
{
	return confirm(WbMstrAlrts[No]+Xtra+'   ')
}

/*********************************************************************************
  Function Name:		Go()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			Go() function checks whether to alert by comparing
						the number of menu items passed.
***********************************************************************************/

function Go()
{
	Dummy();
	if(Loadd||!PosStrt)return;
	BeforeStart();
	Creatd=0; Loadd=1;
	status='Building menu';
	
	if(FirstLineFrame =="" || !parent.frames[FirstLineFrame]){
		FirstLineFrame=SecLineFrame;
		if(FirstLineFrame =="" || !parent.frames[FirstLineFrame]){
			FirstLineFrame=SecLineFrame=DocTargetFrame;
			if(FirstLineFrame =="" || !parent.frames[FirstLineFrame])FirstLineFrame=SecLineFrame=DocTargetFrame=''
		}
	}
	
	if(SecLineFrame =="" || !parent.frames[SecLineFrame]){
		SecLineFrame=DocTargetFrame;
		if(SecLineFrame =="" || !parent.frames[SecLineFrame])SecLineFrame=DocTargetFrame=FirstLineFrame
	}
	
	if(DocTargetFrame =="" || !parent.frames[DocTargetFrame])DocTargetFrame=SecLineFrame;
	
	if(WebMasterCheck){	
		if(!Check('Menu',NoOffFirstLineMenus)){
			status='build aborted';return
		}
	}
	FrstLoc=FirstLineFrame!=""?parent.frames[FirstLineFrame]:window;
	ScLoc=SecLineFrame!=""?parent.frames[SecLineFrame]:window;
	DcLoc=DocTargetFrame!=""?parent.frames[DocTargetFrame]:window;
	
	if (FrstLoc==ScLoc) AcrssFrms=0;
	
	if (AcrssFrms)FirstLineHorizontal=MenuFramesVertical?0:1;
	
	if(Exp6Plus||Opr){
		FHtml=FrstLoc.document.getElementsByTagName("HTML")[0];ScHtml=ScLoc.document.getElementsByTagName("HTML")[0];
		FCmplnt=FrstLoc.document.compatMode.indexOf("CSS")==-1?0:1;SCmplnt=ScLoc.document.compatMode.indexOf("CSS")==-1?0:1
	}
	FrstWinWdth=ExpYes?FCmplnt?FHtml.clientWidth:FrstLoc.document.body.clientWidth:FrstLoc.innerWidth;
	FrstWinHght=ExpYes?FCmplnt?FHtml.clientHeight:FrstLoc.document.body.clientHeight:FrstLoc.innerHeight;
	ScWinWdth=ExpYes?SCmplnt?ScHtml.clientWidth:ScLoc.document.body.clientWidth:ScLoc.innerWidth;
	ScWinHght=ExpYes?SCmplnt?ScHtml.clientHeight:ScLoc.document.body.clientHeight:ScLoc.innerHeight;
	
	if(Nav4){
		CntrTxt=MenuTextCentered!='left'?"<div align='"+MenuTextCentered+"'>":"";
		TxtClose="</font>"+MenuTextCentered!='left'?"</div>":""
	}
	
	FirstColPos=Nav4?FrstLoc.document:FrstLoc.document.body;
	SecColPos=Nav4?ScLoc.document:ScLoc.document.body;
	DocColPos=Nav4?DcLoc.document:ScLoc.document.body;
	
	if (TakeOverBgColor)FirstColPos.bgColor=AcrssFrms?SecColPos.bgColor:DocColPos.bgColor;
	
	if(MenuCentered=='justify'&&FirstLineHorizontal)ClcJus();
	
	if(FrstCreat){
		FrstCntnr=CreateMenuStructure('Menu',NoOffFirstLineMenus);
		FrstCreat=AcrssFrms?0:1
	}
	else CreateMenuStructureAgain('Menu',NoOffFirstLineMenus);
	
	if(TargetLoc)ClcTrgt();
	
	if(MenuCentered)ClcLft();
	
	if(MenuVerticalCentered)ClcTp();
	
	PosMenu(FrstCntnr,StartTop,StartLeft);
	IniFlg=1;
	Initiate();
	Creatd=1;
	
	if (AcrssFrms){
		ScLdAgainWin=ExpYes?ScLoc.document.body:ScLoc;
		ScLdAgainWin.onunload=UnLoaded
	}
	Trigger.onresize=Nav4?ReDoWhole:RePos;
	AfterBuild();
	
	if(MenuVerticalCentered=='static'&&!AcrssFrms)setInterval('KeepPos()',250);
	status='Menu ready for use'
}

/*********************************************************************************
  Function Name:		KeepPos()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			KeepPos() function positions the menu items statically.
***********************************************************************************/

function KeepPos()
{
	var TS=ExpYes?SCmplnt?ScHtml.scrollTop:FrstLoc.document.body.scrollTop:FrstLoc.pageYOffset;

	if(TS!=StaticPos){
		var FCStyle=Nav4?FrstCntnr:FrstCntnr.style;
		FrstCntnr.OrgTop=StartTop+TS;StaticPos=TS;
		FCStyle.top=FrstCntnr.OrgTop+P_X;
	}
}

/*********************************************************************************
  Function Name:		ClcJus()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			ClcJus() function justifies the position of the menu.
***********************************************************************************/

function ClcJus()
{
	var a=BorderBtwnElmnts?1:2,b=BorderBtwnElmnts?BorderWidth:0;
	var Size=Math.round(((FrstWinWdth-a*BorderWidth)/NoOffFirstLineMenus)-b),i,j;
	
	for(i=1;i<NoOffFirstLineMenus+1;i++){
		j=eval('Menu'+i);j[5]=Size
	}
	StartLeft=0
}

/*********************************************************************************
  Function Name:		ClcTrgt()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			ClcTrgt() function sets the target of the menu.
***********************************************************************************/

function ClcTrgt()
{
	var TLoc=Nav4?FrstLoc.document.layers[TargetLoc]:DomYes?FrstLoc.document.getElementById(TargetLoc):FrstLoc.document.all[TargetLoc];
	StartTop=M_StrtTp;
	StartLeft=M_StrtLft;
	
	if(DomYes){
		while(TLoc){
			StartTop+=TLoc.offsetTop;StartLeft+=TLoc.offsetLeft;TLoc=TLoc.offsetParent
		}
	}
	else{
		StartTop+=Nav4?TLoc.pageY:TLoc.offsetTop;StartLeft+=Nav4?TLoc.pageX:TLoc.offsetLeft
	}
}

/*********************************************************************************
  Function Name:		ClcLft()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			ClcLft() function sets the left position of the menu.
***********************************************************************************/

function ClcLft()
{
	if(MenuCentered!='left'&&MenuCentered!='justify'){
		var Size=FrstWinWdth-(!Nav4?parseInt(FrstCntnr.style.width):FrstCntnr.clip.width);
		StartLeft=M_StrtLft;
		StartLeft+=MenuCentered=='right'?Size:Size/2
	}
}

/*********************************************************************************
  Function Name:		ClcTp()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:			ClcTp() function sets the top position of the menu.
***********************************************************************************/

function ClcTp()
{
	if(MenuVerticalCentered!='top'&&MenuVerticalCentered!='static'){
		var Size=FrstWinHght-(!Nav4?parseInt(FrstCntnr.style.height):FrstCntnr.clip.height);
		StartTop=M_StrtTp;
		StartTop+=MenuVerticalCentered=='bottom'?Size:Size/2
	}
}

/*********************************************************************************
  Function Name:		PosMenu()
  Parameters Passed:	CntnrPntr - The exact position of the menu.
						Tp - Top position of the menu.
						Lt - Left position of the menu.
  Return Value:			No value is returned.
  Description:			PosMenu() function sets the actual position of the menu.
***********************************************************************************/

function PosMenu(CntnrPntr,Tp,Lt)
{
	RcrsLvl++;
	var Cmplnt=RcrsLvl==1?FCmplnt:SCmplnt;
	var LftXtra=(DomNav&&!Opr)||Cmplnt?LeftPaddng:0;
	var TpXtra=(DomNav&&!Opr)||Cmplnt?TopPaddng:0;
	var Topi,Lefti,Hori;
	var Cntnr=CntnrPntr;
	var Mmbr=Cntnr.FrstMbr;
	var CntnrStyle=!Nav4?Cntnr.style:Cntnr;
	var MmbrStyle=!Nav4?Mmbr.style:Mmbr;
	var PadL=Mmbr.value.indexOf('<')==-1?LftXtra:0;
	var PadT=Mmbr.value.indexOf('<')==-1?TpXtra:0;
	var MmbrWt=!Nav4?parseInt(MmbrStyle.width)+PadL:MmbrStyle.clip.width;
	var MmbrHt=!Nav4?parseInt(MmbrStyle.height)+PadT:MmbrStyle.clip.height;
	var CntnrWt=!Nav4?parseInt(CntnrStyle.width):CntnrStyle.clip.width;
	var CntnrHt=!Nav4?parseInt(CntnrStyle.height):CntnrStyle.clip.height;
	var SubTp,SubLt;
	
	if (RcrsLvl==1 && AcrssFrms)!MenuFramesVertical?Tp=FrstWinHght-CntnrHt+(Nav4?4:0):Lt=RightToLeft?0:FrstWinWdth-CntnrWt+(Nav4?4:0);
	
	if (RcrsLvl==2 && AcrssFrms)!MenuFramesVertical?Tp=0:Lt=RightToLeft?ScWinWdth-CntnrWt:0;
	
	if (RcrsLvl==2 && AcrssFrms){
		Tp+=VerCorrect;Lt+=HorCorrect
	}
	
	CntnrStyle.top=RcrsLvl==1?Tp+P_X:0;
	Cntnr.OrgTop=Tp;
	CntnrStyle.left=RcrsLvl==1?Lt+P_X:0;
	Cntnr.OrgLeft=Lt;
	
	if (RcrsLvl==1 && FirstLineHorizontal){
		Hori=1;Lefti=CntnrWt-MmbrWt-2*BorderWidth;Topi=0
	}
	
	else{
		Hori=Lefti=0;Topi=CntnrHt-MmbrHt-2*BorderWidth
	}
	while(Mmbr!=null){
		MmbrStyle.left=Lefti+BorderWidth+P_X;
		MmbrStyle.top=Topi+BorderWidth+P_X;
		
		if(Nav4)Mmbr.CmdLyr.moveTo(Lefti+BorderWidth,Topi+BorderWidth);
		
		if(Mmbr.ChildCntnr){
			if(RightToLeft)ChldCntnrWdth=Nav4?Mmbr.ChildCntnr.clip.width:parseInt(Mmbr.ChildCntnr.style.width);
			if(Hori){	
				SubTp=Topi+MmbrHt+2*BorderWidth;
				SubLt=RightToLeft?Lefti+MmbrWt-ChldCntnrWdth:Lefti
			}
			else{	
				SubLt=RightToLeft?Lefti-ChldCntnrWdth+ChildOverlap*MmbrWt+BorderWidth:Lefti+(1-ChildOverlap)*MmbrWt+BorderWidth;
				SubTp=RcrsLvl==1&&AcrssFrms?Topi:Topi+ChildVerticalOverlap*MmbrHt
			}
			PosMenu(Mmbr.ChildCntnr,SubTp,SubLt)
		}
		
		Mmbr=Mmbr.PrvMbr;
		
		if(Mmbr){
			MmbrStyle=!Nav4?Mmbr.style:Mmbr;
			PadL=Mmbr.value.indexOf('<')==-1?LftXtra:0;
			PadT=Mmbr.value.indexOf('<')==-1?TpXtra:0;
			MmbrWt=!Nav4?parseInt(MmbrStyle.width)+PadL:MmbrStyle.clip.width;
			MmbrHt=!Nav4?parseInt(MmbrStyle.height)+PadT:MmbrStyle.clip.height;
			Hori?Lefti-=BorderBtwnElmnts?(MmbrWt+BorderWidth):(MmbrWt):Topi-=BorderBtwnElmnts?(MmbrHt+BorderWidth):(MmbrHt)
		}
	}
	RcrsLvl--
}

/*********************************************************************************
  Function Name:		Initiate()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:		    Initiate() function initiates the menu flag.
***********************************************************************************/

function Initiate()
{
	if(IniFlg){	
		Init(FrstCntnr);IniFlg=0;
		if(ShwFlg)
			AfterCloseAll();
		ShwFlg=0
	}
}

/*********************************************************************************
  Function Name:		Init()
  Parameters Passed:	CntnrPntr - The menu item to which the mouse points.
  Return Value:			No value is returned.
  Description:		    Init() function initiates the menu sub items to which 
						the mouse points.
***********************************************************************************/

function Init(CntnrPntr)
{
	var Mmbr=CntnrPntr.FrstMbr;
	var MCStyle=Nav4?CntnrPntr:CntnrPntr.style;
	RcrsLvl++;
	MCStyle.visibility=RcrsLvl==1?M_Show:M_Hide;
	while(Mmbr!=null){
		if(Mmbr.Hilite){
			Mmbr.Hilite=0;if(KeepHilite)LowItem(Mmbr)
		}
		if(Mmbr.ChildCntnr) Init(Mmbr.ChildCntnr);
		Mmbr=Mmbr.PrvMbr
	}
	RcrsLvl--
}

/*********************************************************************************
  Function Name:		ClearAllChilds()
  Parameters Passed:	Pntr - The menu item from which the mouse moves out.
  Return Value:			No value is returned.
  Description:		    ClearAllChilds() function clears all the menu sub items
						when the mouse pointer moves out from the menu item.
***********************************************************************************/

function ClearAllChilds(Pntr)
{
	var CPCCStyle;
	while (Pntr){
		if(Pntr.Hilite){
			Pntr.Hilite=0;
				if(KeepHilite)LowItem(Pntr);
				if(Pntr.ChildCntnr){
					CPCCStyle=Nav4?Pntr.ChildCntnr:Pntr.ChildCntnr.style;
					CPCCStyle.visibility=M_Hide;
					ClearAllChilds(Pntr.ChildCntnr.FrstMbr)
				}
			break
		}
		Pntr=Pntr.PrvMbr
	}
}

/*********************************************************************************
  Function Name:		GoTo()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:		    GoTo() function sends the page to the hyper link of the 
						menu item.
***********************************************************************************/

function GoTo()
{
	if(this.LinkTxt){
		status='';
		var HP=Nav4?this.LowLyr:this;
		LowItem(HP);
		this.LinkTxt.indexOf('javascript:')!=-1?eval(this.LinkTxt):DcLoc.location.href=this.LinkTxt
	}
}

/*********************************************************************************
  Function Name:		HiliteItem()
  Parameters Passed:	P - The menu item which is selected(to be highlighted).
  Return Value:			No value is returned.
  Description:		    HiliteItem() function highlights the selected menu item.
***********************************************************************************/

function HiliteItem(P)
{
	if(Nav4){
		if(P.ro)P.document.images[P.rid].src=P.ri2;
		else{	
			if(P.HiBck)P.bgColor=P.HiBck;
			if(P.value.indexOf('<img')==-1){
				P.document.write(P.Ovalue);
				P.document.close()
			}
		}
	}
	else{	
		if(P.ro){
			var Lc=P.Level==1?FrstLoc:ScLoc;
			Lc.document.images[P.rid].src=P.ri2
		}
		else{
			if(P.HiBck)P.style.backgroundColor=P.HiBck;
			if(P.HiFntClr)P.style.color=P.HiFntClr
		}
	}
	P.Hilite=1
}

/*********************************************************************************
  Function Name:		LowItem()
  Parameters Passed:	P - The menu item which is selected(to be pull down).
  Return Value:			No value is returned.
  Description:		    LowItem() function pulls down the sub menu items 
						of the selected menu item.
***********************************************************************************/

function LowItem(P)
{
	if(P.ro){	
		if(Nav4)P.document.images[P.rid].src=P.ri1;
		else{
			var Lc=P.Level==1?FrstLoc:ScLoc;
			Lc.document.images[P.rid].src=P.ri1
		}
	}
	else{	
		if(Nav4){
			if(P.LoBck)P.bgColor=P.LoBck;
			if(P.value.indexOf('<img')==-1){
				P.document.write(P.value);
				P.document.close()
			}
		}
		else{
			if(P.LoBck)P.style.backgroundColor=P.LoBck;
			if(P.LwFntClr)P.style.color=P.LwFntClr
		}
	}
}

/*********************************************************************************
  Function Name:		OpenMenu()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:		    OpenMenu() function opens the menu sub items on mouse over
						the menu item.
***********************************************************************************/

function OpenMenu()
{	
	if(!Loadd||!Creatd) return;
	
	var TpScrlld=ExpYes?SCmplnt?ScHtml.scrollTop:ScLoc.document.body.scrollTop:ScLoc.pageYOffset;
	var LScrlld=ExpYes?SCmplnt?ScHtml.scrollLeft:ScLoc.document.body.scrollLeft:ScLoc.pageXOffset;
	var CCnt=Nav4?this.LowLyr.ChildCntnr:this.ChildCntnr;
	var ThisHt=Nav4?this.clip.height:parseInt(this.style.height);
	var ThisWt=Nav4?this.clip.width:parseInt(this.style.width);
	var ThisLft=AcrssFrms&&this.Level==1&&!FirstLineHorizontal?0:Nav4?this.Container.left:parseInt(this.Container.style.left);
	var ThisTp=AcrssFrms&&this.Level==1&&FirstLineHorizontal?0:Nav4?this.Container.top:parseInt(this.Container.style.top);
	var HP=Nav4?this.LowLyr:this;
	CurrntOvr=this;
	IniFlg=0;
	ClearAllChilds(this.Container.FrstMbr);
	HiliteItem(HP);
	
	if(CCnt!=null){
		if(!ShwFlg){
			ShwFlg=1;	
			BeforeFirstOpen()
		}
		var CCW=Nav4?this.LowLyr.ChildCntnr.clip.width:parseInt(this.ChildCntnr.style.width);
		var CCH=Nav4?this.LowLyr.ChildCntnr.clip.height:parseInt(this.ChildCntnr.style.height);
		var ChCntTL=Nav4?this.LowLyr.ChildCntnr:this.ChildCntnr.style;
		var SubLt=AcrssFrms&&this.Level==1?CCnt.OrgLeft+ThisLft+LScrlld:CCnt.OrgLeft+ThisLft;
		var SubTp=AcrssFrms&&this.Level==1?CCnt.OrgTop+ThisTp+TpScrlld:CCnt.OrgTop+ThisTp;
		if(MenuWrap){
			if(RightToLeft){
				if(SubLt<LScrlld)SubLt=this.Level==1?LScrlld:SubLt+(CCW+(1-2*ChildOverlap)*ThisWt);
				if(SubLt+CCW>ScWinWdth+LScrlld)SubLt=ScWinWdth+LScrlld-CCW}
			else{	
				if(SubLt+CCW>ScWinWdth+LScrlld)SubLt=this.Level==1?ScWinWdth+LScrlld-CCW:SubLt-(CCW+(1-2*ChildOverlap)*ThisWt);
				if(SubLt<LScrlld)SubLt=LScrlld
			}
			if(SubTp+CCH>TpScrlld+ScWinHght)SubTp=this.Level==1?SubTp=TpScrlld+ScWinHght-CCH:SubTp-CCH+(1-2*ChildVerticalOverlap)*ThisHt;
			if(SubTp<TpScrlld)SubTp=TpScrlld
		}
		ChCntTL.top=SubTp+P_X;ChCntTL.left=SubLt+P_X;ChCntTL.visibility=M_Show
	}
	status=this.LinkTxt
}

/*********************************************************************************
  Function Name:		OpenMenuClick()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:		    OpenMenuClick() function opens the menu sub items 
						on click of the menu item.
***********************************************************************************/

function OpenMenuClick()
{
	if(!Loadd||!Creatd) return;
	var HP=Nav4?this.LowLyr:this;
	CurrntOvr=this;
	IniFlg=0;
	ClearAllChilds(this.Container.FrstMbr);
	HiliteItem(HP);
	status=this.LinkTxt
}

/*********************************************************************************
  Function Name:		CloseMenu()
  Parameters Passed:	No parameters are passed.
  Return Value:			No value is returned.
  Description:		    CloseMenu() function closes the menu sub items when mouse
						out of the menu item.
***********************************************************************************/

function CloseMenu()
{
	if(!Loadd||!Creatd) return;
	if(!KeepHilite){
		var HP=Nav4?this.LowLyr:this;
		LowItem(HP)
	}
	status='';
	if(this==CurrntOvr){
		IniFlg=1;
		if(CloseTmr)clearTimeout(CloseTmr);
		CloseTmr=setTimeout('Initiate(CurrntOvr)',DissapearDelay)
	}
}

/*********************************************************************************
  Function Name:		CntnrSetUp()
  Parameters Passed:	Wdth - Width of the menu.
						Hght - Hight of the menu.
						NoOff - Number of menu sub items.
  Return Value:			No value is returned.
  Description:		    CntnrSetUp() function sets up the width, hight properties 
						of the menu item.
***********************************************************************************/

function CntnrSetUp(Wdth,Hght,NoOff)
{
	var x=RcrsLvl==1?BorderColor:BorderSubColor;
	this.FrstMbr=null;
	this.OrgLeft=this.OrgTop=0;
	
	if(x)this.bgColor=x;
	
	if(Nav4){	
		this.visibility='hide';
		this.resizeTo(Wdth,Hght)
	}
	else{
		if(x)this.style.backgroundColor=x;
		this.style.width=Wdth+P_X;
		this.style.height=Hght+P_X;
		this.style.fontFamily=FontFamily;
		this.style.fontWeight=FontBold?'bold':'normal';
		this.style.fontStyle=FontItalic?'italic':'normal';
		this.style.fontSize=FontSize+'pt';
		this.style.zIndex=RcrsLvl+Ztop
	}
}

/*********************************************************************************
  Function Name:		MbrSetUp()
  Parameters Passed:	MmbrCntnr - Menu sub item container.
						PrMmbr - Menu sub item position.
						WhatMenu - Main menu name.
						Wdth - Width of the menu sub item.
						Hght - Hight of the menu sub item.
  Return Value:			No value is returned.
  Description:		    MbrSetUp() function sets up the width, hight properties 
						of the menu sub item.
***********************************************************************************/

function MbrSetUp(MmbrCntnr,PrMmbr,WhatMenu,Wdth,Hght)
{
	var Location=RcrsLvl==1?FrstLoc:ScLoc;
	var MemVal=eval(WhatMenu+'[0]');
	var t,T,L,W,H,S;
	var a,b,c,d;
	var Cmplnt=RcrsLvl==1?FCmplnt:SCmplnt;
	var LftXtra=(DomNav&&!Opr)||Cmplnt?LeftPaddng:0;
	var TpXtra=(DomNav&&!Opr)||Cmplnt?TopPaddng:0;
	this.PrvMbr=PrMmbr;
	this.Level=RcrsLvl;
	this.LinkTxt=eval(WhatMenu+'[1]');
	this.Container=MmbrCntnr;
	this.ChildCntnr=null;
	this.Hilite=0;
	this.style.overflow='hidden';
	this.style.cursor=ExpYes&&(this.LinkTxt||(RcrsLvl==1&&UnfoldsOnClick))?'hand':'default';
	this.ro=0;
	
	if(MemVal.indexOf('rollover')!=-1){
		this.ro=1;
		this.ri1=MemVal.substring(MemVal.indexOf(':')+1,MemVal.lastIndexOf(':'));
		this.ri2=MemVal.substring(MemVal.lastIndexOf(':')+1,MemVal.length);
		this.rid=WhatMenu+'i';
		MemVal="<img src=\""+this.ri1+"\" name=\""+this.rid+"\" width=\""+Wdth+"\" height=\""+Hght+"\">"
	}
	this.value=MemVal;
	if(RcrsLvl==1){
		a=LowBgColor;
		b=HighBgColor;
		c=FontLowColor;
		d=FontHighColor
	}
	else{
		a=LowSubBgColor;
		b=HighSubBgColor;
		c=FontSubLowColor;
		d=FontSubHighColor
	}
	this.LoBck=a;
	this.LwFntClr=c;
	this.HiBck=b;
	this.HiFntClr=d;
	this.style.color=this.LwFntClr;
	if(this.LoBck)this.style.backgroundColor=this.LoBck;
	this.style.textAlign=MenuTextCentered;
	if(eval(WhatMenu+'[2]'))this.style.backgroundImage="url(\'"+eval(WhatMenu+'[2]')+"\')";
	if(MemVal.indexOf('<')==-1){
		this.style.width=Wdth-LftXtra+P_X;
		this.style.height=Hght-TpXtra+P_X;
		this.style.paddingLeft=LeftPaddng+P_X;
		this.style.paddingTop=TopPaddng+P_X
	}
	else{
		this.style.width=Wdth+P_X;
		this.style.height=Hght+P_X
	}
	if(MemVal.indexOf('<')==-1&&DomYes){
		t=Location.document.createTextNode(MemVal);
		this.appendChild(t)
	}
	else this.innerHTML=MemVal;

	if(eval(WhatMenu+'[3]')&&ShowArrow){
		a=RcrsLvl==1&&FirstLineHorizontal?3:RightToLeft?6:0;
		S=Arrws[a];
		W=Arrws[a+1];
		H=Arrws[a+2];
		T=RcrsLvl==1&&FirstLineHorizontal?Hght-H-2:(Hght-H)/2;
		L=RightToLeft?2:Wdth-W-2;

		if(DomYes){
			t=Location.document.createElement('img');
			this.appendChild(t);
			t.style.position='absolute';
			t.src=S;

			t.style.width=W+P_X;
			t.style.height=H+P_X;
			t.style.top=T+P_X;
			t.style.left=L+P_X
		}
		else{
			MemVal+="<div style='position:absolute; top:"+T+"; left:"+L+"; width:"+W+"; height:"+H+";visibility:inherit'><img src='"+S+"'></div>";
			this.innerHTML=MemVal
		}
	}
	if(ExpYes){
		this.onselectstart=CnclSlct;
		this.onmouseover=RcrsLvl==1&&UnfoldsOnClick?OpenMenuClick:OpenMenu;
		this.onmouseout=CloseMenu;
		this.onclick=RcrsLvl==1&&UnfoldsOnClick&&eval(WhatMenu+'[3]')?OpenMenu:GoTo	
	}
	else{
		RcrsLvl==1&&UnfoldsOnClick?this.addEventListener('mouseover',OpenMenuClick,false):this.addEventListener('mouseover',OpenMenu,false);
		this.addEventListener('mouseout',CloseMenu,false);
		RcrsLvl==1&&UnfoldsOnClick&&eval(WhatMenu+'[3]')?this.addEventListener('click',OpenMenu,false):this.addEventListener('click',GoTo,false)
	}
}

/*********************************************************************************
  Function Name:		NavMbrSetUp()
  Parameters Passed:	MmbrCntnr - Menu item container.
						PrMmbr - Menu item position.
						WhatMenu - Menu name.
						Wdth - Width of the menu item.
						Hght - Hight of the menu item.
  Return Value:			No value is returned.
  Description:		    NavMbrSetUp() function sets up the width, hight properties 
						of the navigational bar.
***********************************************************************************/

function NavMbrSetUp(MmbrCntnr,PrMmbr,WhatMenu,Wdth,Hght)
{
	var a,b,c,d;

	if(RcrsLvl==1){
		a=LowBgColor;
		b=HighBgColor;
		c=FontLowColor;
		d=FontHighColor
	}
	else {
		a=LowSubBgColor;
		b=HighSubBgColor;
		c=FontSubLowColor;
		d=FontSubHighColor	
	}
	this.value=eval(WhatMenu+'[0]');
	this.ro=0;
	if(this.value.indexOf('rollover')!=-1){
		this.ro=1;
		this.ri1=this.value.substring(this.value.indexOf(':')+1,this.value.lastIndexOf(':'));
		this.ri2=this.value.substring(this.value.lastIndexOf(':')+1,this.value.length);
		this.rid=WhatMenu+'i';this.value="<img src='"+this.ri1+"' name='"+this.rid+"'>"
	}
	
	if(LeftPaddng&&this.value.indexOf('<')==-1&&MenuTextCentered=='left')this.value='&nbsp\;'+this.value;
	
	if(FontBold)this.value=this.value.bold();
	
	if(FontItalic)this.value=this.value.italics();
	
	this.Ovalue=this.value;
	this.value=this.value.fontcolor(c);
	this.Ovalue=this.Ovalue.fontcolor(d);
	this.value=CntrTxt+"<font face='"+FontFamily+"' point-size='"+FontSize+"'>"+this.value+TxtClose;
	this.Ovalue=CntrTxt+"<font face='"+FontFamily+"' point-size='"+FontSize+"'>"+this.Ovalue+TxtClose;
	this.LoBck=a;
	this.HiBck=b;
	this.ChildCntnr=null;
	this.PrvMbr=PrMmbr;
	this.Hilite=0;
	this.visibility='inherit';
	
	if(this.LoBck)this.bgColor=this.LoBck;
	this.resizeTo(Wdth,Hght);
	
	if(!AcrssFrms&&eval(WhatMenu+'[2]'))this.background.src=eval(WhatMenu+'[2]');
	
	this.document.write(this.value);
	this.document.close();
	this.CmdLyr=new Layer(Wdth,MmbrCntnr);
	this.CmdLyr.Level=RcrsLvl;
	this.CmdLyr.LinkTxt=eval(WhatMenu+'[1]');
	this.CmdLyr.visibility='inherit';
	this.CmdLyr.onmouseover=RcrsLvl==1&&UnfoldsOnClick?OpenMenuClick:OpenMenu;
	this.CmdLyr.onmouseout=CloseMenu;
	this.CmdLyr.captureEvents(Event.MOUSEUP);
	this.CmdLyr.onmouseup=RcrsLvl==1&&UnfoldsOnClick&&eval(WhatMenu+'[3]')?OpenMenu:GoTo;
	this.CmdLyr.LowLyr=this;
	this.CmdLyr.resizeTo(Wdth,Hght);
	this.CmdLyr.Container=MmbrCntnr;
	
	if(eval(WhatMenu+'[3]')&&ShowArrow){
		a=RcrsLvl==1&&FirstLineHorizontal?3:RightToLeft?6:0;
		this.CmdLyr.ImgLyr=new Layer(Arrws[a+1],this.CmdLyr);
		this.CmdLyr.ImgLyr.visibility='inherit';
		this.CmdLyr.ImgLyr.top=RcrsLvl==1&&FirstLineHorizontal?Hght-Arrws[a+2]-2:(Hght-Arrws[a+2])/2;
		this.CmdLyr.ImgLyr.left=RightToLeft?2:Wdth-Arrws[a+1]-2;
		this.CmdLyr.ImgLyr.width=Arrws[a+1];
		this.CmdLyr.ImgLyr.height=Arrws[a+2];
		ImgStr="<img src='"+Arrws[a]+"' width='"+Arrws[a+1]+"' height='"+Arrws[a+2]+"'>";
		this.CmdLyr.ImgLyr.document.write(ImgStr);
		this.CmdLyr.ImgLyr.document.close()
	}
}

/*********************************************************************************
  Function Name:		CreateMenuStructure()
  Parameters Passed:	MName - Menu name.
						NumberOf - Number of sub items.
  Return Value:			MmbrCntnr - Returns the location of the menu item 
						in the document.
  Description:		    CreateMenuStructure() function creates menu structure for
						the specified menu item.
***********************************************************************************/

function CreateMenuStructure(MName,NumberOf)
{
	RcrsLvl++;
	var i,NoOffSubs,Mbr,Wdth=0,Hght=0;
	var PrvMmbr=null;
	var WMnu=MName+'1';
	var MenuWidth=eval(WMnu+'[5]');
	var MenuHeight=eval(WMnu+'[4]');
	var Location=RcrsLvl==1?FrstLoc:ScLoc;
	
	if (RcrsLvl==1&&FirstLineHorizontal){
		
		for(i=1;i<NumberOf+1;i++){
			WMnu=MName+eval(i);
			Wdth=eval(WMnu+'[5]')?Wdth+eval(WMnu+'[5]'):Wdth+MenuWidth
		}
		Wdth=BorderBtwnElmnts?Wdth+(NumberOf+1)*BorderWidth:Wdth+2*BorderWidth;Hght=MenuHeight+2*BorderWidth}
	else{	
		for(i=1;i<NumberOf+1;i++){
			WMnu=MName+eval(i);
			Hght=eval(WMnu+'[4]')?Hght+eval(WMnu+'[4]'):Hght+MenuHeight
		}
		Hght=BorderBtwnElmnts?Hght+(NumberOf+1)*BorderWidth:Hght+2*BorderWidth;Wdth=MenuWidth+2*BorderWidth
	}
	if(DomYes){
		var MmbrCntnr=Location.document.createElement("div");
		MmbrCntnr.style.position='absolute';
		MmbrCntnr.style.visibility='hidden';
		Location.document.body.appendChild(MmbrCntnr)
	}
	else{
		if(Nav4) var MmbrCntnr=new Layer(Wdth,Location)
		else{
			WMnu+='c';
			Location.document.body.insertAdjacentHTML("AfterBegin","<div id='"+WMnu+"' style='visibility:hidden; position:absolute;'><\/div>");
			var MmbrCntnr=Location.document.all[WMnu]
		}
	}
	MmbrCntnr.SetUp=CntnrSetUp;
	MmbrCntnr.SetUp(Wdth,Hght,NumberOf);
	if(Exp4){	
		MmbrCntnr.InnerString='';
		for(i=1;i<NumberOf+1;i++){
			WMnu=MName+eval(i);
			MmbrCntnr.InnerString+="<div id='"+WMnu+"' style='position:absolute;'><\/div>"
		}
		MmbrCntnr.innerHTML=MmbrCntnr.InnerString
	}
	for(i=1;i<NumberOf+1;i++){
		WMnu=MName+eval(i);
		NoOffSubs=eval(WMnu+'[3]');
		Wdth=RcrsLvl==1&&FirstLineHorizontal?eval(WMnu+'[5]')?eval(WMnu+'[5]'):MenuWidth:MenuWidth;
		Hght=RcrsLvl==1&&FirstLineHorizontal?MenuHeight:eval(WMnu+'[4]')?eval(WMnu+'[4]'):MenuHeight;
		if(DomYes){
			Mbr=Location.document.createElement("div");
			Mbr.style.position='absolute';
			Mbr.style.visibility='inherit';
			MmbrCntnr.appendChild(Mbr)
		}
		else Mbr=Nav4?new Layer(Wdth,MmbrCntnr):Location.document.all[WMnu];
		Mbr.SetUp=Nav4?NavMbrSetUp:MbrSetUp;
		Mbr.SetUp(MmbrCntnr,PrvMmbr,WMnu,Wdth,Hght);
		if(NoOffSubs) Mbr.ChildCntnr=CreateMenuStructure(WMnu+'_',NoOffSubs);
		PrvMmbr=Mbr
	}
	MmbrCntnr.FrstMbr=Mbr;
	RcrsLvl--;
	return(MmbrCntnr)
}

/*********************************************************************************
  Function Name:		CreateMenuStructureAgain()
  Parameters Passed:	MName - Menu name.
						NumberOf - Number of sub items.
  Return Value:			No value is returned.
  Description:		    CreateMenuStructureAgain() function creates menu structure
						once again according to the parameters passed.
***********************************************************************************/

function CreateMenuStructureAgain(MName,NumberOf)
{
	var i,WMnu,NoOffSubs,PrvMmbr,Mbr=FrstCntnr.FrstMbr;
	RcrsLvl++;
	for(i=NumberOf;i>0;i--){
		WMnu=MName+eval(i);
		NoOffSubs=eval(WMnu+'[3]');
		PrvMmbr=Mbr;
		if(NoOffSubs)Mbr.ChildCntnr=CreateMenuStructure(WMnu+'_',NoOffSubs);
		Mbr=Mbr.PrvMbr
	}
	RcrsLvl--
}