	navigateStr: function (iTarget)	{		// This method implements case 7 of the Navigation Request Process 		// (NB.2.1).		//		// It also applies the Overall Sequencing Process (OP) to the		// indicated navigation request.		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;		}				// Make sure the requested activity exists		var target = this.getActivity(iTarget);				if (target != null)		{			// 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;			}						var process = true;						this.validateRequests();						// If the sequencing session has already begun, confirm the			// navigation request is valid.			if (!newSession)			{				var valid = this.mSeqTree.getValidRequests();								if (valid != null)				{					// Confirm the target activity is allowed					if (valid.mChoice != null)					{						var test = valid.mChoice.get(iTarget);												if (test == null)						{							launch.mSeqNonContent = LAUNCH_ERROR_INVALIDNAVREQ;							process = false;						} 						else if (!test.mIsSelectable)						{							launch.mSeqNonContent = LAUNCH_ERROR_INVALIDNAVREQ;							process = false;						}					}					else					{						launch.mSeqNonContent = LAUNCH_ERROR_INVALIDNAVREQ;						process = false;					}				}				else				{					launch.mSeqNonContent = LAUNCH_ERROR;					launch.mEndSession = true;					// Invalid request -- do not process					process = false;				}			}						// If the navigation request is valid process it			if (process)			{				// This block implements the overall sequencing loop								// Clear Global State				this.mValidTermination = true;				this.mValidSequencing = true;								var seqReq = iTarget;				var delReq = null;								// Check if a termination is required				if (!newSession)				{					if (cur.getIsActive())					{						// Issue a termination request of 'exit'						seqReq = this.doTerminationRequest(TER_EXIT, false);						if (seqReq == null)						{							seqReq = iTarget;						}					}				}								if (this.mValidTermination)				{					// Issue the pending sequencing request					delReq = this.doSequencingRequest(seqReq);				}				else				{					launch.mSeqNonContent = LAUNCH_NOTHING;				}								if (this.mValidSequencing)				{					this.doDeliveryRequest(delReq, false, launch);				}				else				{					launch.mSeqNonContent = LAUNCH_SEQ_BLOCKED;				}			}			else			{				launch.mNavState = this.mSeqTree.getValidRequests();			}		}		else		{			launch.mSeqNonContent = LAUNCH_ERROR;			launch.mEndSession = true;                  		}				return launch;	},
6251	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/6251/9e15caa6d630f92a70cc2c476014452d89034533/ADLSequencer.js/clean/Modules/Scorm2004/scripts/adl2js/ADLSequencer.js