anchor.diff:  			if(map["message"] == "ping") //only used to keep the connection alive, ignore
   				return;
   			
  -			if(!chat.getJoinMessagesVisibility() && map["message"] == " joined.") //ignore join messages unless the user turns them on
  -				return;
  -			
  -			if(map["channel"] == "all") //support for global messages (god mode messages)
  +			if(map["message"] == " joined.")
  +			{
  +				if(!connectedUsers.contains(map["username"]))
  +					connectedUsers.add(map["username"]);
  +				if(!chat.getJoinMessagesVisibility()) //ignore join messages unless the user turns them on
  +					return;
  +			}
  +			
  +			if(map["message"] == " left.")
  +			{
  +				connectedUsers.remove(map["username"]);
  +				if(!chat.getJoinMessagesVisibility()) //ignore left messages unless the user turns them on
  +					return;
  +			}
  +			
  +			if(map["channel"] == "all")
   			{
   				_addmessage(chatHistory, map);
   			}
  
positive.code: 					_username = map["newUsername"];
  					localStorage["username"] = _username;
  				}
  			}
  			else
  			{
  
negative.code: 			Map map = new Map();
  			if(input.value.split(" ")[0] == "/setname")
  			{
  				map["statusMessage"] = "changeName";
  				map["username"] = _username;
  				map["newUsername"] = input.value.substring(9);
  				map["channel"] = channelName;
  			}
  