code:
var i = new Enumerator(Contacts);
for (; !i.atEnd(); i.moveNext()) {
var Contact = i.item();
if (Contact.Email === Arg) return Contact.Email;
}
is way more readable than your use of a while loop but ok...
---------------------
Regarding timers.
The problem is not group chats... but a user who might sign out (before his/her name could be (re)set) and signing in under another Windows Live Id.
Reading your comments in the script I think I know where your confusing comes from though. The definition of a "user" is he/she who is running this script, thus the person who uses USay. The people you talk to aren't "users", they are the "contacts".
---------------------
Also, some detail, but still to be correct (especially considering that confusion can very easly occur if you don't name the things by their proper name, see above): it is "Windows Live Messenger", not "Messenger Live".
refering to some strings in the DLL now