function PrintNetUsrHelp(options)
{
	println("User management - available commands:");
	println("\t list - list users in specified domain");
	println("\t info - display user account information");
}


function ListUsers(usrCtx)
{
	var list, user;
	var finished = false;

	for (list = usrCtx.List(list); list.Status.is_ok && !finished; list = usrCtx.List(list)) {
		for (i = 0; i < list.Count; i++) {
			user = list.Users[i];
			printf("%s\n", user.Username);
		}
		
		finished = list.EndOfList;
	}

	printf("\nResult: %s\n", list.Status.errstr);
}


function UserInfo(usrCtx, username)
{
	var info;

	info = usrCtx.Info(username);
	if (info == null) {
		println("Account unknown");
		return -1;
	}

	println("User account info:\n");
	printf("AccountName = %s\n", info.AccountName);
	printf("Description = %s\n", info.Description);
	printf("FullName    = %s\n", info.FullName);
	printf("AcctExpiry  = %s\n", info.AcctExpiry);
}


function UserManager(ctx, options)
{
	var usrCtx;

	if (options.ARGV.length < 2) {
		PrintNetUsrHelp(options);
		return -1;

	}
	
	var usrCmd = options.ARGV[1];

	if (usrCmd == "create") {

	} else if (usrCmd == "info") {
		var userName;

		if (options.ARGV.length > 2) {
			userName = options.ARGV[2];
		} else {
			println("No username provided");
			return -1;
		}
		usrCtx = ctx.UserMgr();

		UserInfo(usrCtx, userName);

	} else if (usrCmd == "list") {

		if (options.ARGV.length > 2) {
			usrCtx = ctx.UserMgr(options.ARGV[2]);
		} else {
			usrCtx = ctx.UserMgr();
		}

		ListUsers(usrCtx);

	} else {
		println("Unknown command specified.");
		PrintNetUsrHelp(options);
	}
}