1 var NS_VCARD = 'vcard-temp';
2 var BOSH_SERVICE = 'http://localhost:5280/http-bind/';
7 var roster = new Array();
10 var entry = $('<div></div>').append(document.createTextNode(msg));
11 $('#log').append(entry);
14 function rawInput(data) {
18 function rawOutput(data) {
22 function jid2id(jid) {
23 return jid.split('@').join('-').split('.').join('-');
26 function populateVCard(e, jid) {
27 var easy_cases = new Array('FN', 'FAMILY', 'MIDDLE', 'GIVEN', 'NICKNAME', 'BDAY', 'CTRY', 'USERID');
28 for (var i=0; i<easy_cases.length; i++) {
29 var text = e.getElementsByTagName(easy_cases[i])[0];
31 text = Strophe.getText(text);
32 $('#'+easy_cases[i]).append(document.createTextNode(text));
35 var avatar = e.getElementsByTagName('PHOTO')[0];
37 var mime = Strophe.getText(avatar.getElementsByTagName('TYPE')[0]);
38 var binval = Strophe.getText(avatar.getElementsByTagName('BINVAL')[0]);
40 $("#"+jid2id(jid)+" img").attr('src', 'data:'+mime+';base64,'+binval);
41 $("#PHOTO img").attr('src', 'data:'+mime+';base64,'+binval);
43 $('#vCard_container').slideDown("normal");
46 function _cbVCard(e) {
47 var jid = e.getAttribute('from');
48 if (roster[jid2id(jid)].vCard == "") {
49 roster[jid2id(jid)].vCard = e;
51 if ($('#vCard_container').is(':visible')) {
52 $('#vCard_container').hide();
54 $('#vCard_container').empty();
55 $('#vCard_container').load('vCard.html #vCard', function() {populateVCard(e, jid);});
60 function getVCard(jid) {
61 var id = 'getvCard'+jid2id(jid);
62 if (roster[jid2id(jid)].vCard == "") {
63 var vCardiq = $iq({'to':jid,
66 ).c('vCard', {'xmlns':NS_VCARD});
67 connection.addHandler(_cbVCard, null, 'iq', 'result', id);
68 connection.send(vCardiq.tree());
70 _cbVCard(roster[jid2id(jid)].vCard);
75 function addFriend(jid, nick) {
76 roster[jid2id(jid)] = new Buddy(nick, jid);
77 $('#friends').append('<div class="friend" id="'+jid2id(jid)+'"><img src="imgs/none.png" /><br /><span class="nick">'+nick+'</span></div>');
78 $('#'+jid2id(jid)).click(function() {
83 function _cbRoster(e) {
84 var query = e.getElementsByTagName('query')[0];
85 var entries = query.getElementsByTagName('item');
86 for (var item=0; item<entries.length; item++) {
87 nick = entries[item].getAttribute('name');
89 nick = entries[item].getAttribute('jid').split('@')[0];
91 addFriend(entries[item].getAttribute('jid'), nick);
96 function getRoster() {
99 var rosteriq = $iq({'id':id,
101 ).c('query', {'xmlns':Strophe.NS.ROSTER});
103 connection.addHandler(_cbRoster, null, 'iq', 'result', id);
104 connection.send(rosteriq.tree());
107 function onConnect(status) {
108 if (status == Strophe.Status.CONNECTING) {
109 log('Strophe is connecting.');
111 } else if (status == Strophe.Status.CONNFAIL) {
112 log('Strophe failed to connect.');
114 } else if (status == Strophe.Status.DISCONNECTING) {
115 log('Strophe is disconnecting.');
116 } else if (status == Strophe.Status.DISCONNECTED) {
117 log('Strophe is disconnected.');
120 } else if (status == Strophe.Status.CONNECTED) {
121 log('Strophe is connected.');
126 function showConnect() {
128 var pass = $('#pass');
129 var button = $('#connect').get(0);
132 $('#vCard_container').empty();
133 $('#friends').empty();
137 button.value = 'connect';
141 function showDisconnect() {
143 var pass = $('#pass');
144 var button = $('#connect').get(0);
146 button.value = 'disconnect';
153 $(document).ready(function () {
154 connection = new Strophe.Connection(BOSH_SERVICE);
155 connection.rawInput = rawInput;
156 connection.rawOutput = rawOutput;
158 $("#log_toggle").click(function () {
162 $('#vCard_container').click(function () {
163 $('#vCard_container').slideUp("normal");
166 $('#cred').bind('submit', function () {
167 var button = $('#connect').get(0);
169 var pass = $('#pass');
171 if (button.value == 'connect') {
173 connection.connect(jid.get(0).value,
177 connection.disconnect();