const recursiveAccountDisplayInfo = function(account, account_map, accountChildren, prefix) {
	var name = prefix + account.Name;
	var accounts = [{AccountId: account.AccountId, Name: name}];
	for (var i = 0; i < accountChildren[account.AccountId].length; i++)
		accounts = accounts.concat(recursiveAccountDisplayInfo(account_map[accountChildren[account.AccountId][i]], account_map, accountChildren, name + "/"));
	return accounts
};

const getAccountDisplayList = function(account_map, accountChildren, includeRoot, rootName) {
	var accounts = []
	if (includeRoot)
		accounts.push({AccountId: -1, Name: rootName});
	for (var accountId in account_map) {
		if (account_map.hasOwnProperty(accountId) &&
				account_map[accountId].isRootAccount())
			accounts = accounts.concat(recursiveAccountDisplayInfo(account_map[accountId], account_map, accountChildren, ""));
	}
	return accounts;
};

const getAccountDisplayName = function(account, account_map) {
	var name = account.Name;
	while (account.ParentAccountId >= 0) {
		account = account_map[account.ParentAccountId];
		name = account.Name + "/" + name;
	}
	return name;
};

module.exports = {
	getAccountDisplayList: getAccountDisplayList,
	getAccountDisplayName: getAccountDisplayName
};