anchor.diff:  						break;
   					}
   				}
  +				//if we didn't find it yet and the tabSearchIndex was not 0, let's look at the beginning of the array as well
  +				//otherwise the user will have to press the tab key again
  +				if(!tabInserted)
  +				{
  +					for(int index = 0; index < tabSearchIndex; index++)
  +					{
  +						String username = connectedUsers.elementAt(index);
  +						if(username.toLowerCase().startsWith(lastWord.toLowerCase()))
  +						{
  +							input.value = input.value.substring(0, input.value.lastIndexOf(" ")+1) + username;
  +							tabInserted = true;
  +							tabSearchIndex = index + 1;
  +							break;
  +						}
  +					}
  +				}
   				
   				if(tabSearchIndex == connectedUsers.length) //wrap around for next time
   					tabSearchIndex = 0;
  
positive.code: 			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)
  			{
  				_addmessage(chatHistory, map);
  			}
  
negative.code: 					_username = map["newUsername"];
  					localStorage["username"] = _username;
  				}
  				
  				connectedUsers.remove(map["username"]);
  				connectedUsers.add(map["newUsername"]);
  			}
  			else
  			{
  