rem: for (var cmdIndex = 0; cmdIndex < cmdArray.lenght; cmdIndex++) 
add: for (var cmdIndex = 0; cmdIndex < cmdArray.length; cmdIndex++) 
context: function fillContextMenu(name){	if (!name)	return(false);	var popupNode = document.getElementById(name);	if (!popupNode)	return(false);	// remove the menu node (which tosses all of its kids);	// do this in case any old command nodes are hanging around	var menuNode = popupNode.childNodes[0];	popupNode.removeChild(menuNode);	// create a new menu node	menuNode = document.createElement("menu");	popupNode.appendChild(menuNode);	var treeNode = document.getElementById("bookmarksTree");	if (!treeNode)	return(false);	var db = treeNode.database;	if (!db)	return(false);		var compositeDB = db.QueryInterface(Components.interfaces.nsIRDFDataSource);	if (!compositeDB)	return(false);	var isupports = Components.classes["component://netscape/rdf/rdf-service"].getService();	if (!isupports)	return(false);	var rdf = isupports.QueryInterface(Components.interfaces.nsIRDFService);	if (!rdf)	return(false);	var select_list = treeNode.getElementsByAttribute("selected", "true");	if (select_list.length < 1)	return(false);		dump("# of Nodes selected: " + select_list.length + "\n\n");	// perform intersection of commands over selected nodes	var cmdArray = new Array();	for (var nodeIndex=0; nodeIndex<select_list.length; nodeIndex++)	{		var node = select_list[nodeIndex];		if (!node)	break;		var id = node.getAttribute("id");		if (!id)	break;		var rdfNode = rdf.GetResource(id);		if (!rdfNode)	break;		var cmdEnum = db.GetAllCmds(rdfNode);		if (!cmdEnum)	break;		var nextCmdArray = new Array();		while (cmdEnum.HasMoreElements())		{			var cmd = cmdEnum.GetNext();			if (!cmd)	break;			if (nodeIndex == 0)			{				cmdArray[cmdArray.length] = cmd;			}			else			{				nextCmdArray[cmdArray.length] = cmd;			}		}		if (nodeIndex > 0)		{			// perform command intersection calculation			for (var cmdIndex = 0; cmdIndex < cmdArray.lenght; cmdIndex++)			{				var	cmdFound = false;				for (var nextCmdIndex = 0; nextCmdIndex < nextCmdArray.lenght; nextCmdIndex++)				{					if (nextCmdArray[nextCmdIndex] == cmdArray[cmdIndex])					{						cmdFound = true;						break;					}				}				if (cmdfound == false)				{					cmdArray[cmdIndex] = null;				}			}		}	}	// need a resource to ask RDF for each command's name	var rdfNameResource = rdf.GetResource("http://home.netscape.com/NC-rdf#Name");	if (!rdfNameResource)		return(false);	// build up menu items	if (cmdArray.length < 1)	return(false);	for (var cmdIndex = 0; cmdIndex < cmdArray.length; cmdIndex++)	{		var cmd = cmdArray[cmdIndex];		if (!cmd)		continue;		var cmdResource = cmd.QueryInterface(Components.interfaces.nsIRDFResource);		if (!cmdResource)	break;		var cmdNameNode = compositeDB.GetTarget(cmdResource, rdfNameResource, true);		if (!cmdNameNode)	break;		cmdNameLiteral = cmdNameNode.QueryInterface(Components.interfaces.nsIRDFLiteral);		if (!cmdNameLiteral)	break;		cmdName = cmdNameLiteral.Value;		if (!cmdName)		break;		dump("Command #" + cmdIndex + ": id='" + cmdResource.Value + "'  name='" + cmdName + "'\n\n");		var menuItem = document.createElement("menuitem");		menuItem.setAttribute("name", cmdName);		menuItem.setAttribute("onclick", "return doContextCmd('" + cmdResource.Value + "');");				menuNode.appendChild(menuItem);	}	return(true);}
meta: 10234	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/10234/c0a84a24294635fbb9febf338869b935d704db23/bookmarks.js/clean/suite/common/bookmarks/bookmarks.js