{
	var m_bCanNavigate=true;
	var m_bNavigated=false;
	var m_iLastLink=null;
	var m_oLinkFramePairs = new Array();
	
	function LinkFramePair(Link,Frame)
	{
		this.Link = Link;
		this.Frame = Frame;
	}
	
	function onLink(LinkCell)
	{
		if (LinkCell.className.search('Selected') < 0)
		{	
			LinkCell.className = 'Hover' + LinkCell.className.substr(6);
			LinkCell.previousSibling.className = 'Hover' + LinkCell.previousSibling.className.substr(6);
			LinkCell.nextSibling.firstChild.className = 'Hover' + LinkCell.nextSibling.firstChild.className.substr(6);		
		}
	}
	
	function offLink(LinkCell)
	{
		if (LinkCell.className.search('Hover') >= 0)
		{
			LinkCell.className = 'Normal' + LinkCell.className.substr(5);
			LinkCell.previousSibling.className = 'Normal' + LinkCell.previousSibling.className.substr(5);
			LinkCell.nextSibling.firstChild.className = 'Normal' + LinkCell.nextSibling.firstChild.className.substr(5);
		}
	}
	function IsNumeric(inputVal) 
	{
     		if (isNaN(parseFloat(inputVal))) 
		{
        	  return false;
     		}
		return true;
	}

		
	function ConditionNavigateTo(PageID,ObjectID,ClassID,ParentObjectID,ParentClassID,TaskID,SubClass,VirtualParentObject, VirtualParentClass,isSecured,MsgID)
	{	
		if (IsNumeric(VirtualParentObject)==false)
		{
			VirtualParentObject= null;
		}

		if (IsNumeric(VirtualParentClass)==false)
		{
			VirtualParentClass = null;
		}


		ParentObjectID = (ParentObjectID==null) ? m_ObjectID : ParentObjectID; 
		ParentClassID = (ParentClassID==null) ? m_ClassID : ParentClassID;
		TaskID = (TaskID==null) ? m_TaskID : TaskID;
		SubClass = (SubClass==null) ? m_SubType : SubClass;
		VirtualParentObject = (VirtualParentObject==null) ? m_VirtualParentObjectID : VirtualParentObject;
		VirtualParentClass = (VirtualParentClass==null) ? m_VirtualParentClassID : VirtualParentClass;
			
		if(MsgID == null)
			MsgID=1090022;

		if (m_bCanNavigate)
		{
			NavigateTo(PageID,ObjectID,ClassID,ParentObjectID,ParentClassID,TaskID,SubClass,VirtualParentObject, VirtualParentClass,isSecured);
			return true;
		}
		else
		{
			
			Msgbox(MsgID);
			return false;
		}
	}
	
	function NavigateTo(PageID,ObjectID,ClassID,ParentObjectID,ParentClassID,TaskID,SubType,VirtualParentObject, VirtualParentClass, isSecured)
	{
		var sURL = createGeminiURL(PageID,ObjectID,ClassID,ParentObjectID,ParentClassID,TaskID,SubType,VirtualParentObject, VirtualParentClass,null,isSecured);
	
		var bResult = insertFrame(PageID,sURL);
		m_bNavigated=true;
		return bResult;
	}
	
	function insertFrame(ID,URL)
	{
		var oPageFrame = getDomElement('PAGEFRAME' + ID);
		var oWorkSpace = getDomElement('WORKSPACE');
		var i=0;
		// bad xsl ?
		if (oWorkSpace == null)
		{
			return false;
		}
		// else - hide kids
		// hide all prior IFrames
		while (i < oWorkSpace.childNodes.length)
		{ 
			oWorkSpace.childNodes[i].className='Hidden';
			i++;
		}
		
		
		if (oPageFrame == null) 
		// frame doesnt exist - insert the frame
		{
			if (m_oLinkFramePairs.length==0)
			{
				m_oLinkFramePairs[m_oLinkFramePairs.length] = new LinkFramePair(m_FirstLink,m_PageID);
			}
			m_oLinkFramePairs[m_oLinkFramePairs.length] = new LinkFramePair(m_iLastLink,ID);
			
			var html = '<DIV Height="100%" Width="100%" ID="PAGEFRAME' + ID + '"' + ' NAME="PAGEFRAME' + ID + '">' + 
			    '<IFRAME Height="100%" Width="100%" Framespacing="0" Frameborder="0" border="0" scrolling="no" SRC="' + URL + '"' + ' ID="Frame' + ID + '"' + ' NAME="Frame' + ID + '">.</IFRAME></DIV>';
			    
			
			//oWorkSpace.insertAdjacentHTML('afterbegin',html);		
			oWorkSpace.innerHTML += html;
		}
		// frame not loaded propertly
		else 
		// frame exists, show it & hide others
		{
			oPageFrame.className='Shown';		
		}
		return true;
	}	

	function onMenuHeader(sectionID)
	{
		var index=0;
		var oLinksTables = document.getElementsByName('MenuLinksTable');
		
		if (oLinksTables.length > 0)
		{
			while (index < oLinksTables.length)
			{
				var oLinksTable = oLinksTables[index];
				if (index+1 == sectionID)
				{
					oLinksTable.className='Shown';
				}
				else
				{
					oLinksTable.className='Hidden';
				}
				index++;
			}
		}
	}	
	
	function hideAllMenus()
	{
		var index=0;
		var oLinksTables = document.getElementsByName('MenuLinksTable');
		
		if (oLinksTables.length > 0)
		{
			while (index < oLinksTables.length)
			{
				var oLinksTable = oLinksTables[index];
				oLinksTable.className='Hidden';
				index++;
			}
		}
	}

	function NavigationLinkOnClick(ID)	
	{
		var iIndex = 0;
		var oLinkCell = null;
		var oNextLinkCell = null;
		var oPreviousLinkCell = null;
		var oLinkCells = new Array(); //document.getElementsByName('LINKCELL');
		
		if (event == null) return;
		
		var tbl = event.srcElement;
		while (tbl != null && tbl.className != 'Octanebar') tbl = tbl.parentNode;	    
	    if (tbl == null)return;
	        
	    var oCells = tbl.getElementsByTagName('td');
	        
	    for (var i = 0; i < oCells.length; i++)
	        if (oCells[i].getAttribute("Name") == "LINKCELL")
	            oLinkCells.push(oCells[i]);
		
		
		
					
		if (ID==null)
		{
			if (m_iLastLink==null)
			{			
				if (typeof(m_FirstLink)=="undefined" || typeof(m_FirstLink)=="null" ) return;
				m_iLastLink = m_FirstLink;
			}
			ID = m_iLastLink;
		}
		// state
		m_iLastLink = ID;
		m_bNavigated=false;
				
		
		// get the current link
		while (iIndex < oLinkCells.length)
		{
			if (oLinkCells[iIndex].getAttribute('No') == ID)
			{
				oLinkCell = oLinkCells[iIndex];
				if (iIndex+1 < oLinkCells.length && oLinkCells[iIndex+1] != null)
					oNextLinkCell = oLinkCells[iIndex+1];
				if (iIndex > 0 && oLinkCells[iIndex-1] != null)
					oPreviousLinkCell = oLinkCells[iIndex-1];
				break;
			}
			iIndex++;
		}		
		
		if (oLinkCell == null) 
		    return; // just for safety 

		//////////////////////////////////////////////////////////////////////////////////
		// execute the script
		var sAction = oLinkCell.getAttribute('evaluate');
		if (sAction == null)	
		{
			// it's an ms style outlookbar
			var oLink = getDomElement('LINK' +  oLinkCell.No);
			sAction =  oLink.getAttribute('evaluate');
		}
		
		if (sAction.slice(0,11).toLowerCase() == 'javascript:')
		    sAction = sAction.slice(11);

		if (!eval(sAction))
			return;
		
		//////////////////////////////////////////////////////////////////////////////////		
		// set css		
		if ((oLinkCell.className.search('LinkCell') != -1) || (oLinkCell.className.search('SunkenCell') != -1))
			return; // other outlookbars

		for (iIndex=0; iIndex < oLinkCells.length; iIndex++)
		{
			var oNode = oLinkCells[iIndex];
			
			if (oNode != oLinkCell)  
			{				
				// not selected
				oNode.className = 'NormalTextCell';			
				// left tip
				oNode.previousSibling.className = 'NormalLeftTipCell';
				// connector
				oNode.nextSibling.firstChild.className = 'NormalConnectorCell'

				// Top connector
				var oTopConnector = oNode.parentNode.parentNode.parentNode.previousSibling;
				if (oTopConnector != null) 
				    oTopConnector.className = 'NormalSeperatorCell';

				// Bottom connector
				var oBottomConnector = oNode.parentNode.parentNode.parentNode.nextSibling;	
				if ((oBottomConnector != null) && (oBottomConnector.className != 'LastSeperatorCell')) 
					oBottomConnector.className = 'NormalSeperatorCell';
			}
			else
			{
				// selected
				oNode.className = 'SelectedTextCell';			
				// left tip
				oNode.previousSibling.className = 'SelectedLeftTipCell';
				// connector
				oNode.nextSibling.firstChild.className = 'SelectedConnectorCell'
			}
		}

		// must be done after the llop is done, so it wont be overridden
		// Top connector
		var oTopConnector = oLinkCell.parentNode.parentNode.parentNode.previousSibling;
		if (oTopConnector != null) 
			oTopConnector.className = 'TopSeperatorCell'
		else
			oLinkCell.nextSibling.firstChild.style.borderTop = '1px solid #000000'; // first one

		// Bottom connector
		var oBottomConnector = oLinkCell.parentNode.parentNode.parentNode.nextSibling;						
		if ((oBottomConnector != null) && (oBottomConnector.className != 'LastSeperatorCell')) 
			oBottomConnector.className = 'BottomSeperatorCell';
		else
			oLinkCell.nextSibling.firstChild.style.borderBottom = '1px solid #000000'; // last one
	}
	
	function clearFrames()
	{
		var oWorkSpace = getDomElement('WORKSPACE');
		if (oWorkSpace != null)
		{
			// octanebar 
			var oPages = oWorkSpace.children;
			var oPage;
			var iIndex;
					
			if (document.getElementsByName('LinksTable').length > 1)
			{
				//ContainerClick(1);
			}
			NavigationLinkOnClick(m_FirstLink);
			
			for (iIndex=0;iIndex<oPages.length;iIndex++)
			{
				oPage = oPages[iIndex];
				if (oPage.id.search(m_PageID)==-1)
				{
					oWorkSpace.removeChild(oPage);
					iIndex--;
				}
				else
				{
					oPage.className='Shown';
				}
			}
		}
		else
		{
			// divsbar
			var arFrames = document.getElementsByTagName("IFRAME");
			alert (arFrames.length);
			for (iIndex=arFrames.length-1; iIndex>=0; iIndex--)
			{
				if (arFrames[iIndex].id.search('Frame')!=-1)
				{
					// remove frame
					alert ('removing ' + arFrames[iIndex].id);
					var iFrameID = arFrames[iIndex].FrameID;
					arFrames[iIndex].parentNode.removeChild(arFrames[iIndex]);				
					// colapse parent DIV
					var oExpandBarImage = getDomElement('ExpandBarImage' + iFrameID);
					var oDataDiv = getDomElement('DataDiv' + iFrameID);
					oDataDiv.className='Hidden';
					oExpandBarImage.src = createGeminiImage('images/expand.gif');		
				}
			}			
		}
	}

	function clearSingleFrame(PageID)
	{
		var oWorkSpace = getDomElement('WORKSPACE');
		var oPage;
		if  (oWorkSpace != null) 
		{
			// octanebar
			for (var iIndex=0;iIndex<m_oLinkFramePairs.length;iIndex++)
				if (m_oLinkFramePairs[iIndex].Frame==PageID)
					if (m_iLastLink==m_oLinkFramePairs[iIndex].Link)
						NavigationLinkOnClick(m_FirstLink);
			oPage = getDomElement('PageFrame' + PageID );
			if (oPage!=null) 
			{
				var oParent = oPage.parentNode;
				try
				{
					oParent.removeChild(oPage);
				}
				catch (e)
				{
					oWorkSpace.removeChild(oPage);
				}
			}	
			
			//--- Pop the PageID From the Array ---
			var aTempContainer = new Array();
			var jIndex = 0;
			for (var iIndex=0;iIndex<m_oLinkFramePairs.length;iIndex++)
			{
				if (m_oLinkFramePairs[iIndex].Frame!=PageID)				
					aTempContainer[jIndex++] = m_oLinkFramePairs[iIndex];				
			}			
			m_oLinkFramePairs = aTempContainer;		
			//oPage.className='Shown';	
		} 
		else
		{
			// divsbar
			var arFrames = document.getElementsByTagName("IFRAME");
			for (iIndex=arFrames.length-1; iIndex>=0; iIndex--)
			{
				if (arFrames[iIndex].id == 'Frame' + PageID)
				{
					// remove frame
					//alert ('removing ' + arFrames[iIndex].id);
					var iFrameID = arFrames[iIndex].FrameID;
					arFrames[iIndex].parentNode.removeChild(arFrames[iIndex]);				
					// colapse parent DIV
					var oExpandBarImage = getDomElement('ExpandBarImage' + iFrameID);
					var oDataDiv = getDomElement('DataDiv' + iFrameID);
					oDataDiv.className='Hidden';
					oExpandBarImage.src = createGeminiImage('images/expand.gif');		
				}
			}			
		}
	}
	
	function returnTo(Frame)
	{
		var iIndex;
		var oPair;
		for (iIndex=0;iIndex<m_oLinkFramePairs.length;iIndex++)
		{
			oPair = m_oLinkFramePairs[iIndex];
			if (oPair.Frame == Frame)
			{
				NavigationLinkOnClick(oPair.Link);
				return;
			}
		}		
	}


	function onDivBarClick(Div)
	{
		var sAction = Div.getAttribute('action');
		var iID		= Div.id;

		if (sAction.indexOf('NavigateTo') > 0)
			sAction = sAction.replace('NavigateTo(', 'NavigateToEx(' + iID + ',');

		eval (sAction);			
	}

	function NavigateToEx(FrameID, PageID,ObjectID,ClassID,ParentObjectID,ParentClassID,TaskID,SubType,VirtualParentObject, VirtualParentClass, isSecured)
	{
		var sURL = createGeminiURL(PageID,ObjectID,ClassID,ParentObjectID,ParentClassID,TaskID,SubType,VirtualParentObject, VirtualParentClass,null,isSecured);
		var oFrame	= getDomElement('Frame' + PageID);

		if (oFrame == null)
		{
			var oDataDiv = getDomElement('DataDiv' + FrameID);
			oDataDiv.insertAdjacentHTML('afterbegin', '<IFRAME Border="1" Width="100%" Height="0px" Frameborder="0" id="Frame' + PageID + '" name="Frame' + PageID + '" FrameID="' + FrameID + '" scrolling="no" src="' + sURL + '" ResizeFrame="true"></IFRAME>');							
		}

		HandleDataDiv(FrameID);
	}

	function ConditionNavigateToEx(FrameID, PageID,ObjectID,ClassID,ParentObjectID,ParentClassID,TaskID,SubClass,VirtualParentObject, VirtualParentClass,isSecured,MsgID)
	{		
		ParentObjectID = (ParentObjectID==null) ? m_ObjectID : ParentObjectID; 
		ParentClassID = (ParentClassID==null) ? m_ClassID : ParentClassID;
		TaskID = (TaskID==null) ? m_TaskID : TaskID;
		SubClass = (SubClass==null) ? m_SubType : SubClass;
		VirtualParentObject = (VirtualParentObject==null) ? m_VirtualParentObjectID : VirtualParentObject;
		VirtualParentClass = (VirtualParentClass==null) ? m_VirtualParentClassID : VirtualParentClass;
			
		if(MsgID == null)
			MsgID=1090022;

		if (m_bCanNavigate)
		{
			NavigateToEx(FrameID, PageID,ObjectID,ClassID,ParentObjectID,ParentClassID,TaskID,SubClass,VirtualParentObject, VirtualParentClass,isSecured);
			return true;
		}
		else
		{
			
			Msgbox(MsgID);
			return false;
		}
	}

}