alert("Firefox lost mSeqTree"); 
	navigate: function (iRequest)	{		var launch = new ADLLaunch();				// Make sure an activity tree has been associated with this sequencer		if (this.mSeqTree == null)		{			// No activity tree, therefore nothing to do			//    -- inform the caller of the error.			launch.mSeqNonContent = LAUNCH_ERROR;			launch.mEndSession = true;			return launch;		}				// If this is a new session, we start at the root.		var newSession = false;		var cur = this.mSeqTree.getCurrentActivity();		if (cur == null)		{			this.prepareClusters();			newSession = true;			this.validateRequests();		}				var process = true;		var valid = null;				if (newSession && iRequest == NAV_NONE)		{			// Processing a TOC request		}		else if (newSession && (iRequest == NAV_EXITALL ||			iRequest == NAV_ABANDONALL))		{			launch.mSeqNonContent = LAUNCH_EXITSESSION;			launch.mEndSession = true;			process = false;		}		else if (iRequest == NAV_CONTINUE || iRequest == NAV_PREVIOUS)		{			this.validateRequests();			valid = this.mSeqTree.getValidRequests();					// Can't validate requests -- Error			if (valid == null)			{				launch.mSeqNonContent = LAUNCH_ERROR;				launch.mEndSession = true;						// Invalid request -- do not process				process = false;			}			else			{				if (iRequest == NAV_CONTINUE)				{					if (!valid.mContinue)					{						process = false;						launch.mSeqNonContent = LAUNCH_ERROR_INVALIDNAVREQ;					}				}				else				{					if (!valid.mPrevious)					{						process = false;						launch.mSeqNonContent = LAUNCH_ERROR_INVALIDNAVREQ;					}				}			}		}		else		{			// Use the IMS Navigation Request Process to validate the request			process = this.doIMSNavValidation(iRequest);						if (!process)			{				launch.mSeqNonContent = LAUNCH_ERROR_INVALIDNAVREQ;			}		}				// Process any pending navigation request		if (process)		{			// This block implements the overall sequencing loop						// Clear Global State			this.mValidTermination = true;			this.mValidSequencing = true;						var seqReq = null;			var delReq = null;					// Translate the navigation request into termination and/or sequencing 			// request(s).			switch (iRequest)			{				case NAV_START:					delReq = this.doSequencingRequest(SEQ_START);					if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}					break;						case NAV_RESUMEALL:									delReq = this.doSequencingRequest(SEQ_RESUMEALL);					if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}					break;						case NAV_CONTINUE:						if (cur.getIsActive())					{						// Issue a termination request of 'exit'						seqReq = this.doTerminationRequest(TER_EXIT, false);					}										if (this.mValidTermination)					{						// Issue the pending sequencing request						if (seqReq == null)						{							delReq = this.doSequencingRequest(SEQ_CONTINUE);						}						else						{							delReq = this.doSequencingRequest(seqReq);						}					}					else					{						launch.mSeqNonContent = LAUNCH_NOTHING;					}										if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}					break;							case NAV_PREVIOUS:							if (cur.getIsActive())					{						// Issue a termination request of 'exit'						seqReq = this.doTerminationRequest(TER_EXIT, false);					}										if (this.mValidTermination)					{						// Issue the pending sequencing request						if (seqReq == null)						{							delReq = this.doSequencingRequest(SEQ_PREVIOUS);						}						else						{							delReq = this.doSequencingRequest(seqReq);						}					}					else					{						launch.mSeqNonContent = LAUNCH_NOTHING;					}										if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}					break;									case NAV_ABANDON:					// Issue a termination request of 'abandon'					seqReq = this.doTerminationRequest(TER_ABANDON, false);										// The termination process cannot return a sequencing request 					// because post condition rules are not evaluated.					if (this.mValidTermination)					{						delReq = this.doSequencingRequest(SEQ_EXIT);						// If the session hasn't ended, re-validate nav requests						if (!this.mEndSession && !this.mExitCourse)						{							this.validateRequests();						}					}					else					{						launch.mSeqNonContent = LAUNCH_NOTHING;					}										if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);                  						launch.mSeqNonContent = LAUNCH_SEQ_ABANDON;                 					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}										break;								case NAV_ABANDONALL:					// Issue a termination request of 'abandonAll'					seqReq = this.doTerminationRequest(TER_ABANDONALL, false);										// The termination process cannot return a sequencing request 					// because post condition rules are not evaluated.					if (this.mValidTermination)					{						delReq = this.doSequencingRequest(SEQ_EXIT);					}					else					{						launch.mSeqNonContent = LAUNCH_NOTHING;					}										if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);						launch.mSeqNonContent = LAUNCH_SEQ_ABANDONALL;                 					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}					break;							case NAV_SUSPENDALL:								// Issue a termination request of 'suspendAll'					seqReq = this.doTerminationRequest(TER_SUSPENDALL, false);										// The termination process cannot return a sequencing request 					// because post condition rules are not evaluated.					if (this.mValidTermination)					{						delReq = this.doSequencingRequest(SEQ_EXIT);					}					else					{						launch.mSeqNonContent = LAUNCH_NOTHING;					}										if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}					break;							case NAV_EXIT:								// Issue a termination request of 'exit'					seqReq = this.doTerminationRequest(TER_EXIT, false);					if (this.mValidTermination)					{						if (seqReq == null)						{							delReq = this.doSequencingRequest(SEQ_EXIT);						}						else						{							delReq = this.doSequencingRequest(seqReq);						}												// If the session hasn't ended, re-validate nav requests						if (!this.mEndSession && !this.mExitCourse)						{							this.validateRequests();						}					}					else					{						launch.mSeqNonContent = LAUNCH_NOTHING;					}										if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}					break;							case NAV_EXITALL:								// Issue a termination request of 'exitAll'					seqReq = this.doTerminationRequest(TER_EXITALL, false);										// The termination process cannot return a sequencing request 					// because post condition rules are not evaluated.					if (this.mValidTermination)					{						delReq = this.doSequencingRequest(SEQ_EXIT);					}					else					{						launch.mSeqNonContent = LAUNCH_NOTHING;					}										if (this.mValidSequencing)					{						this.doDeliveryRequest(delReq, false, launch);					}					else					{						launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;					}					break;							case NAV_NONE:								// Don't invoke any termination or sequencing requests,					// but display a TOC if available					launch.mSeqNonContent = LAUNCH_TOC;										launch.mNavState = this.mSeqTree.getValidRequests();					// Make sure that a TOC is realy available					if (launch.mNavState.mTOC == null)					{						launch.mSeqNonContent = LAUNCH_ERROR_INVALIDNAVREQ;					}					break;									default:					launch.mSeqNonContent = LAUNCH_ERROR;			}		}		else		{			launch.mNavState = this.mSeqTree.getValidRequests();						// If navigation requests haven't been validated, try to validate now.			if (launch.mNavState == null)			{				this.validateRequests();				launch.mNavState = this.mSeqTree.getValidRequests();			}		}		return launch;	},
6251	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/6251/cb1d4fb286364804e62c99aca54d5b546c56ed5e/ADLSequencer.js/clean/Modules/Scorm2004/scripts/adl2js/ADLSequencer.js