Wimz-icle: Analyzing AOL Wimzi
AOL recently released a new addition to their already wide lineup of enhancements to their instant messaging system. This time around, it’s Wimzi, a “widget” to be planted on other pages (most commonly social networking sites) to enable users to communicate via the AIM network with the owner of that profile/site, without having to start their IM client or even enabling communication if they don’t already have an account.
To demonstrate, it looks a lot like this:

Now, it’s a novel idea, and I applaud AOL for following through on what groups like Meebo have been doing (to some extent) for the greater part of a year now (at least). But I would have expected them to use a little more care when setting up how this interfaces with their network. I would have expected something more along the lines of an AJAX-enabled client that interfaced with a server-side script that managed everything. Not only would this keep their protocol exposure to a minimum, but at the same time it would add just a little bit of security.
Now, here’s the HTML for that planted demonstration above.
<script type=”text/javascript” src=”http://o.aolcdn.com/aim/web-aim/aimapi.js”>
</script>
<script type=”text/javascript”>
AIM.util.createStyleSheet(
“http://o.aolcdn.com/aim/wimzi/pitchblack_mini.css”);</script>
<script type=”text/javascript”
src=”http://o.aolcdn.com/aim/web-aim/wimzi.js”></script>
<div id=”wimziContainer” wimzi_key=”ni1jo-m5alYiWuiK”></div>
If you’ll notice, there are a few interesting bits here. First off, notice the key for the layer named “wimziContainer”. This, I assume, is an identification key for the AOL servers to establish who to IM. This provides a layer of security so we can’t just figure out who we’re talking to unless the user actively posts their name (part of the intentional design). Undoubtedly, there will be people who set this up to be their screen name, thus defeating the purpose, and in such cases there really proves to be no point as to why this feature even exists, but I’m glad they worked it in.
AOL also added support for theming with several predefined themes in blue, black, pink, and orange (…but they conveniently forgot to add in the green
). However, thanks to the miracle of downloading the CSS manually, you can make your own skin for it. So, there’s at least one part of this we can modify. For example, in addition to colorizing the widget in a style you want, you can change the images indicating status to something more appropriate for your theme, like perhaps a flower – open when online, closed when offline or away.
More interesting than the CSS (and apparent unmentioned desire for people to write unsanctioned skins) is the pair of underlying JavaScript files that make it all work. Lines 11-23 of wimzi.js contain settings controlling some of the text that appears on the widget, like the link to “get your own”; even the URL that link leads to is redefinable.
What’s interesting is that even though aimapi.js in this instance appears to have been tailored slightly to work with the Wimzi model, there are a lot of functions that make absolutely no sense remaining in the script, like iterating through each person in the buddy list (lines 518-523, aimapi.js), defining sound events for items like people signing in and out on the user’s buddy list, and blanked-out functions (to the point where they don’t even return anything) for whatever “data IMs” are (images perhaps?) (lines 619-625).
An amusing note to make here is the recurring line 606/954/1086/1237/1304/2072/2105 (yes, it is on all of those) of aimapi.js:
if(winID.indexOf(“+”) == 0) winID = winID.replace(/\+/,”SMS”);
Indeed…if you can understand that, this line checks for a plus sign at the first character position (denoting a phone number to SMS to) and if there is one, replaces it with the characters “SMS”. Now, one would think that doing this manually and sending a message to SMS<10-digit-number-here> rather than +<10-digit-number-here> would work, but for some reason my attempts to do so have failed every time. (If anyone knows why this might be, let me know.)
Now, I’m no expert, but I don’t think I can see any way these scripts could be used to code your own complete IM client outside of the featureset Wimzi provides, unless I’m being particularly blind. Sure, AOL provides the developer area should you be interested in writing something, but I was hoping there might be something that could be done for the masses