CServerS* CMasterGameServer::GetLeastUsedServer(EGBGameRegion region)
{
	CServerS* selected = NULL;
	int       minGames = 999;

	// search for server with maximum available users
	for(TSupersList::iterator it = supers_.begin(); it != supers_.end(); ++it) 
	{
		CServerS* super = it->second;

		// filter our supervisors if region is specified
		if(region != GBNET_REGION_Unknown && super->region_ != region)
			continue;

		if(super->GetExpectedGames() >= super->maxGames_)
			continue;

		if(super->GetExpectedGames() < minGames) {
			selected = super;
			minGames = super->GetExpectedGames();
		}


	}

	return selected;
}