+function genCaps() {
+ var S = '', i;
+ S += 'client/web//' + appName + '<';
+ features.sort();
+ for (i = 0; i < features.length; i++) {
+ S += features[i] + '<';
+ }
+ return b64_sha1(S);
+}
+
+function populateVCard(e, jid) {
+ var easy_cases = ['FN', 'FAMILY', 'MIDDLE', 'GIVEN', 'NICKNAME', 'BDAY', 'CTRY', 'USERID'], i, text, avatar, mime, binval;
+ for (i = 0; i < easy_cases.length; i++) {
+ text = e.getElementsByTagName(easy_cases[i])[0];
+ if (text) {
+ text = Strophe.getText(text);
+ $('#' + easy_cases[i]).append(Strophe.xmlTextNode(text));
+ }
+ }
+ avatar = e.getElementsByTagName('PHOTO')[0];
+ if (avatar) {
+ mime = Strophe.getText(avatar.getElementsByTagName('TYPE')[0]);
+ binval = Strophe.getText(avatar.getElementsByTagName('BINVAL')[0]);
+
+ $("#"+jid2id(jid)+" img").attr('src', 'data:'+mime+';base64,'+binval);
+ $("#PHOTO img").attr('src', 'data:'+mime+';base64,'+binval);
+ }
+ $(e).find('TEL:has(HOME)').each(function() {
+ $('#TELHOME').append(' ');
+ $('#TELHOME').append(Strophe.xmlTextNode($(this).find('NUMBER').text()));
+ });
+ $(e).find('TEL:has(WORK)').each(function() {
+ $('#TELWORK').append(' ');
+ $('#TELWORK').append(Strophe.xmlTextNode($(this).find('NUMBER').text()));
+ });
+ $(e).find('EMAIL:has(HOME)').each(function() {
+ $('#EMAILHOME').append(' ');
+ $('#EMAILHOME').append(Strophe.xmlTextNode($(this).find('USERID').text()));
+ });
+ $(e).find('EMAIL:has(WORK)').each(function() {
+ $('#EMAILWORK').append(' ');
+ $('#EMAILWORK').append(Strophe.xmlTextNode($(this).find('USERID').text()));
+ });
+
+ if (!roster[jid2id(jid)].tune.isEmpty()) {
+ $('#vCard ul').append('<li id="tune"><span class="vCardName">Tune: </span>Listening to '+
+ roster[jid2id(jid)].tune.title + ' by ' + roster[jid2id(jid)].tune.artist +
+ ' from ' + roster[jid2id(jid)].tune.source + '</li>');
+ }
+
+ $('#vCard').click(function () {
+ $('#vCard_container').slideUp("normal", function() {
+ $('#box-overlay').hide();
+ });
+ roster[jid2id(jid)].visible = false;
+ });
+
+ $('#box-overlay').show();
+ $('#vCard_container').slideDown("normal");
+ roster[jid2id(jid)].visible = true;
+}
+