			iClosePrevMenu = 1;
			var Imgloader = new Image();
			var iIndex, sMenu;
			var sMousePointer = "";
			var agt=navigator.userAgent.toLowerCase(); 
			if(agt.indexOf("msie") > 0)
				sMousePointer = "cursor: hand;";
			else
				sMousePointer = "cursor: pointer;";
				
			// Object constructor 
			function MenuItem ( ID, Title, ParentNo )	{
				this.ID = ID;	// Could have just used arMenu.length - but user needs to control ID incase of parenting.;
				this.Title = Title;
				this.Parent = ParentNo;
				this.Done = 0;
			}
			
			//Allow default open menu item
			function AutoExpand(ID)	{
				var sID;
				var iCase;
				var objMenuItem;
				
				if(ID == null)
					ID = "";
				if((ID == "") && ( sDefaultPageID != ''))
					ID = sDefaultPageID;

				if(ID != ""){
					objMenuItem = GetMenuByID(ID);
					if (objMenuItem != null)	{
						if(GetMenuByID(ID).Parent == "")
							iCase = 0;
						else
							iCase = 1;
						//Nav Style	
						ChangeNavClass(ID, iCase);
						//Nav Visible
						objMenuItem = document.getElementById('DivMenuItem' + ID);
						if (objMenuItem != null)	{
							objMenuItem.style.display = 'block';
						}
						var objTemp;
						for(var i = 0; i < arMenu.length; i++){
							objTemp = document.getElementById("TDNav" + arMenu[i].ID);
							//Cursor correction
							if(agt.indexOf("msie") > 0)
								objTemp.style.cursor = "hand";
							else
								objTemp.style.cursor = "pointer";
							//Class and image
							if(arMenu[i].ID != ID){ //Work with submenu
								if(arMenu[i].Parent != ""){
									if(arMenu[i].Parent == ID){
										iCase = 2;
									}
									else{
										iCase = 4;
										if(isAncestor(arMenu[i].ID, ID)){
											iCase = 2;
											//alert(isAncestor(arMenu[i].ID, ID));
											objMenuItem = document.getElementById('DivMenuItem' + arMenu[i].ID);
											if (objMenuItem != null)	{
												objMenuItem.style.display = 'block';
											}
										}
									}
								}
								else{
									if(isAncestor(arMenu[i].ID, ID)){
										//alert(isAncestor(arMenu[i].ID, ID));
										iCase = 0;
										objMenuItem = document.getElementById('DivMenuItem' + arMenu[i].ID);
										if (objMenuItem != null)	{
											objMenuItem.style.display = 'block';
										}
									}
									else{
										iCase = 3;
									}
								}
								ChangeNavClass(arMenu[i].ID, iCase);
							}
						}
						iLastOpenedItemID = ID;
					}
				}
			}
			
			//Open/Close DIV
			function ToggleItem(MenuID)	{
				if(iClosePrevMenu == 1)
					CloseSubmenus();
				AutoExpand(MenuID);
				var objTmp;
				objTmp = document.getElementById('TDNav' + MenuID);
				if ( objTmp.attributes["URL"].value.length > 1 ) {
					//alert("Navigating!:" + arMenu[MenuItemID].URL);
					location.href = objTmp.attributes["URL"].value;
				}
				iLastOpenedItemID = MenuID;
				
			}
			
			
			//Called from main procedure to create Menu
			function CreateMenu()	{
				loadNavImage();
				//alert(document.URL);
				var sTmp = ProcessNavCookie("STMenuItem");
				AutoExpand( sTmp );
				return true;
				
			}

			
			//Sub Functions used by page functions
			
			/* 
				iCase 0 : Top Menu element active
				iCase 1 : Sub Menu with SubMenus active
				iCase 2 : Sub Menu of Active Menu
				iCase 3 : Top Menu element deactivate
				iCase 4 : Sub Menu without Sunmenus deactivate
			*/
			
			function ChangeNavClass(ID, iCase){
				var objTmp;
				objTmp = document.getElementById('TDNav' + ID);
				if (objTmp){
					switch(iCase){
						case 0:
							objTmp.className = sTopMenuACls;
							break;
						case 1:
							objTmp.className = sSubmenuOpenCls;
							break;
						case 2:
							//alert(GetMenuByID(ID).Title);
							objTmp.className = sSubmenuACls;
							break;
						case 3:
							objTmp.className = sTopMenuCls;
							break;
						case 4:
							objTmp.className = sSubmenuCls;
							break;
						}
				}
				
				objTmp = document.getElementById('STNavImg' + ID);
				if (objTmp){
					switch(iCase){
						case 0:
							objTmp.src = eval("Imgloader.downM.src");
							break;
						case 1:
							objTmp.src = eval("Imgloader.down.src");
							break;
						case 2:
							objTmp.src = eval("Imgloader.down.src");
							break;
						case 3:
							objTmp.src = eval("Imgloader.upM.src");
							break;
						case 4:
							objTmp.src = eval("Imgloader.up.src");
							break;
					}
				}
				
				objTmp = document.getElementById('STNavTDImg' + ID);
				if (objTmp){
					switch(iCase){
						case 0:
							objTmp.className = sTopMenuACls;
							break;
						case 1:
							objTmp.className = sSubmenuOpenCls;
							break;
						case 2:
							objTmp.className = sSubmenuACls;
							break;
						case 3:
							objTmp.className = sTopMenuCls;
							break;
						case 4:
							objTmp.className = sSubmenuCls;
							break;
					}
				}
					
			}			
			
			//Return MenuItem in main array
			//Input ID is ID of the MenuItem
			function GetMenuByID(ID){
				for(var i = 0; i < arMenu.length; i++){
					if(arMenu[i].ID == ID){
						return arMenu[i];
					}
				}
				return null;
			}
			
			//sID is the posible parent
			//ID is the child
			function isAncestor(sID, ID){
				var oMItem = GetMenuByID(ID);
				var oParent = GetMenuByID(sID)
				if(oParent != null){
					do{
						if(oMItem.Parent == "-1")
							return false;
						if(oParent.ID == oMItem.Parent)
							return true;
						oMItem = GetMenuByID(oMItem.Parent);
					
					}
					while(oMItem != null);
				}
				return false;
			}
			
			//Clear Array
			//Only available when Closing of previous menus is not required.
			function ClearMenuArray()	{
				if (iClosePrevMenu != 1)	{
					for (iIndex = 0; iIndex <= arMenu.length - 1; iIndex++)	{
						arMenu[iIndex] = null;
					}
					arMenu.length = 0;

				}

			}

			
			//From the select submenu upwards close all options
			function CloseSubmenus()	{
				var objMenuItem;
				if(iClosePrevMenu == 1){
					for(var i = 0; i < arMenu.length; i++){
						objMenuItem = document.getElementById('DivMenuItem' + arMenu[i].ID);
						if (objMenuItem != null)	{
							objMenuItem.style.display = 'none';
						}
					}
				}
			}
			
			//Load Image object the contains the image source strings
			function loadNavImage(){
				var s;
				
				if (Imgloader &&
					(null == Imgloader.down || typeof(Imgloader.down) == typeof(void(0)))) {
					Imgloader.upM = new Image();
					Imgloader.upM.src = sSectionImgPath;
					Imgloader.downM = new Image();
					Imgloader.downM.src = sSectionImgDownPath;
					Imgloader.up = new Image();
					Imgloader.up.src = sSubImgPath;
					Imgloader.down = new Image();
					Imgloader.down.src = sSubImgDownPath;
				}
				return true
			}
			
			//Process Cookkie for nav
			function ProcessNavCookie(Name)
			{
				var Search, ReturnVal, offSet, End;	
				Search = Name + "=";
				ReturnVal = "";
				
				if (document.cookie.length > 0)
				{
					offSet = document.cookie.indexOf(Search);
					if (offSet != -1)
					{
						offSet += Search.length;
						End = document.cookie.indexOf(";", offSet);
						if (End == -1)
						{
							End = document.cookie.length;
						}
						ReturnVal = unescape(document.cookie.substring(offSet, End));
					}
				}
				return ReturnVal;
			}
			