]> cgit.babelmonkeys.de Git - socialXMPP.git/blob - scripts/basic.js
Check if there is a nick specified or not
[socialXMPP.git] / scripts / basic.js
1 var NS_VCARD = 'vcard-temp';
2 var BOSH_SERVICE = 'http://localhost:5280/http-bind/';
3
4 var connection   = null;
5 var show_log     = true;
6
7 function log(msg) {
8     var entry = $('<div></div>').append(document.createTextNode(msg));
9     $('#log').append(entry);
10 }
11
12 function rawInput(data) {
13     log('RECV: ' + data);
14 }
15
16 function rawOutput(data) {
17     log('SENT: ' + data);
18 }
19
20 function jid2id(jid) {
21     return jid.split('@').join('-').split('.').join('-');
22 }
23
24 function _cbVCard(e) {
25     var jid = e.getAttribute('from');
26     var avatar = e.getElementsByTagName('PHOTO')[0];
27     if (avatar) {
28         var mime = Strophe.getText(avatar.getElementsByTagName('TYPE')[0]);
29         var binval = Strophe.getText(avatar.getElementsByTagName('BINVAL')[0]);
30
31         $("#"+jid2id(jid)+" img").attr('src', 'data:'+mime+';base64,'+binval);
32     }
33
34     return false;
35 }
36
37 function getAvatar(jid) {
38     var id = 'getvCard'+jid2id(jid);
39     var vCardiq = $iq({'to':jid,
40                         'id':id,
41                         'type':'get'}
42         ).c('vCard', {'xmlns':NS_VCARD});
43     connection.addHandler(_cbVCard, null, 'iq', 'result', id);
44     connection.send(vCardiq.tree());
45
46 }
47
48 function addFriend(jid, nick) {
49     $('#friends').append('<div class="friend" id="'+jid2id(jid)+'"><img src="imgs/none.png" /><br /><span class="nick">'+nick+'</span></div>');
50     $('#'+jid2id(jid)).click(function() {
51         getAvatar(jid);
52     });
53 }
54
55 function _cbRoster(e) {
56     var query = e.getElementsByTagName('query')[0];
57     var entries = query.getElementsByTagName('item');
58     for (var item=0; item<entries.length; item++) {
59         nick = entries[item].getAttribute('name');
60         if (!nick) {
61             nick = entries[item].getAttribute('jid').split('@')[0];
62         }
63         addFriend(entries[item].getAttribute('jid'), nick);
64     }
65     return false;
66 }
67
68 function getRoster() {
69     var id = 'getRoster';
70
71     var rosteriq = $iq({'id':id,
72                         'type':'get'}
73         ).c('query', {'xmlns':Strophe.NS.ROSTER});
74
75     connection.addHandler(_cbRoster, null, 'iq', 'result', id);
76     connection.send(rosteriq.tree());
77 }
78
79 function onConnect(status) {
80     if (status == Strophe.Status.CONNECTING) {
81         log('Strophe is connecting.');
82
83     } else if (status == Strophe.Status.CONNFAIL) {
84         log('Strophe failed to connect.');
85         showConnect();
86     } else if (status == Strophe.Status.DISCONNECTING) {
87         log('Strophe is disconnecting.');
88     } else if (status == Strophe.Status.DISCONNECTED) {
89         log('Strophe is disconnected.');
90         showConnect();
91
92     } else if (status == Strophe.Status.CONNECTED) {
93         log('Strophe is connected.');
94         getRoster();
95     }
96 }
97
98 function showConnect() {
99     var jid = $('#jid');
100     var pass = $('#pass');
101     var button = $('#connect').get(0);  
102
103     $('#log').empty();
104     $('#friends').empty();
105     $('label').show();
106     jid.show();
107     pass.show();
108     button.value = 'connect';
109     return false;
110 }
111
112 function showDisconnect() {
113     var jid = $('#jid');
114     var pass = $('#pass');
115     var button = $('#connect').get(0);  
116
117     button.value = 'disconnect';
118     pass.hide();
119     jid.hide();
120     $('label').hide();
121     return false;
122 }
123
124 $(document).ready(function () {
125     connection = new Strophe.Connection(BOSH_SERVICE);
126     connection.rawInput = rawInput;
127     connection.rawOutput = rawOutput;
128
129     $("#log_toggle").bind('click', function () {
130         $("#log").toggle();     
131       } 
132       );
133
134     $('#cred').bind('submit', function () {
135         var button = $('#connect').get(0);
136         var jid = $('#jid');
137         var pass = $('#pass');  
138         
139         if (button.value == 'connect') {
140             showDisconnect();
141             connection.connect(jid.get(0).value,
142                                pass.get(0).value,
143                                onConnect);
144         } else {
145             connection.disconnect();
146             showConnect();
147         }
148         return false;
149     });
150 });