Findexisting anyside

Here you go :slight_smile:

// PlayfulGo
// 
// 
// This is a script for Directory Opus.
// See http://www.gpsoft.com.au/DScripts/redirect.asp?page=scripts for development information.
// 
// 
// 
// Called by Directory Opus to initialize the script
function OnInit(initData)
{
	initData.name = "PlayfulGo";
	initData.desc = "";
	initData.copyright = "";
	initData.version = "1.0";
	initData.default_enable = false;

	var cmd = initData.AddCommand();
	cmd.name = "PlayfulGo";
	cmd.method = "OnPlayfulGo";
	cmd.desc = "Equivalent of Go NEWTAB=findexistingdual";
	cmd.label = "PlayfulGo";
	cmd.template = "PATH";
}


// Implement the PlayfulGo command
function OnPlayfulGo(scriptCmdData)
{
	if (scriptCmdData.func.sourcetab.lister.dual == 0)
		scriptCmdData.func.command.RunCommand('Go "' + scriptCmdData.func.args.path + '" NEWTAB=findexisting');
	else
	if (!DoPlayfulGo(scriptCmdData, scriptCmdData.func.sourcetab.lister.tabs))
		scriptCmdData.func.command.RunCommand('Go "' + scriptCmdData.func.args.path + '" NEWTAB');
}

function DoPlayfulGo(scriptCmdData, tabs)
{
	var FSUtil = DOpus.FSUtil();
	var e = new Enumerator(tabs);
	var index = new Array(0, 0);
	e.moveFirst();
	while (!e.atEnd())
	{
		if (FSUtil.ComparePath(e.item().path, scriptCmdData.func.args.path))
		{
			if (scriptCmdData.func.sourcetab.right != e.item().right)
				scriptCmdData.func.command.AddLine('Set FOCUS=toggle');
			scriptCmdData.func.command.AddLine('Go TABSELECT ' + index[e.item().right ? 1 : 0]);
			scriptCmdData.func.command.Run();
			return true;
		}
		++index[e.item().right ? 1 : 0];
		e.moveNext();
	}
	return false;
}