delete rollupSet[ioTarget.getID()];  
 rollupSet.splice(ioTarget.getID(),1); 
	invokeRollup: function (ioTarget, iWriteObjIDs)	{		var rollupSet = new Object();		// Hashtable				// Case #1 -- Rollup applies along the active path		if (ioTarget == this.mSeqTree.getCurrentActivity())		{			var walk = ioTarget;						// Walk from the target to the root, apply rollup rules at each step			while (walk != null)			{				rollupSet[walk.getID()] = walk.getDepth();								var writeObjIDs = walk.getObjIDs(null, false);				if (writeObjIDs != null)				{					for (var i = 0; i < writeObjIDs.length; i++)					{						var objID = writeObjIDs[i];												// Need to identify all activity's that 'read' this objective						// into their primary objective -- those activities need to be						// included in the rollup set						var acts = this.mSeqTree.getObjMap(objID);												if (acts != null)						{							for (var j = 0; j < acts.length; j++)							{								var act = this.getActivity(acts[j]);																// Only rollup at the parent of the affected activity								act = act.getParent();																if (act != null)								{									// Only add if the activity is selected									if (act.getIsSelected())									{										rollupSet[act.getID()] = act.getDepth();									}								}							}						}					}				}								walk = walk.getParent();			}						// Remove the Current Activity from the rollup set			delete rollupSet[ioTarget.getID()];			//rollupSet.splice(ioTarget.getID(),1);		}				// Case #2 -- Rollup applies when the state of a global shared objective		// is written to...		if (iWriteObjIDs != null)		{			for (var i = 0; i < iWriteObjIDs.length; i++)			{				var objID = iWriteObjIDs[i];								// Need to identify all activity's that 'read' this objective				// into their primary objective -- those activities need to be				// included in the rollup set				var acts = this.mSeqTree.getObjMap(objID);								if (acts != null)				{					for (var j = 0; j < acts.length; j++)					{						var act = this.getActivity(acts[j]);												// Only rollup at the parent of the affected activity						act = act.getParent();												if (act != null)						{							// Only add if the activity is selected							if (act.getIsSelected())							{								rollupSet.put[act.getID()] = act.getDepth();							}						}					}				}			}		}				// Perform the deterministic rollup extension		while (rollupSet.length != 0)		{			// Find the deepest activity			var deepest = null;			var depth = -1;						for (var key in rollupSet)			{				var thisDepth = rollupSet[key];								if (depth == -1)				{					depth = thisDepth;					deepest = this.getActivity(key);				}				else if (thisDepth > depth)				{					depth = thisDepth;					deepest = this.getActivity(key);				}			}						if (deepest != null)			{				this.doOverallRollup(deepest, rollupSet);								// If rollup was performed on the root, set the course's status				if (deepest == this.mSeqTree.getRoot())				{										var satisfied = "unknown";					if (deepest.getObjStatus(false))					{						satisfied = (deepest.getObjSatisfied(false))							? "satisfied"							: "notSatisfied";					}										var measure = "unknown";					if (deepest.getObjMeasureStatus(false))					{						measure = deepest.getObjMeasure(false);					}										var completed = "unknown";					if (deepest.getProgressStatus(false))					{						completed = (deepest.getAttemptCompleted(false))							? "completed"							: "incomplete";					}										adl_seq_utilities.setCourseStatus(this.mSeqTree.getCourseID(),						this.mSeqTree.getLearnerID(),satisfied,measure,completed);				}			}		}	},
6251	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/6251/41a8a11bad36a732e8970056ab880d5ace98ed52/ADLSequencer.js/buggy/Modules/Scorm2004/scripts/adl2js/ADLSequencer.js