var BOSH_SERVICE = 'http://alias.fr.nf/http-bind'; var connection = null; function log(msg, color) { $('#log').append($('
').css('background-color', color).text(msg)); } function rawInput(data) { log('RECV: ' + data, '#FBB6B4'); } function rawOutput(data) { log('SENT: ' + data, '#B5BBFB'); } function getRoster() { var roster = $iq({type : 'get'}).c('query', {xmlns : Strophe.NS.ROSTER}); connection.sendIQ(roster, onRoster); } function getPresence(contact) { if ( contact.hasClass("online") ) return 2; else if ( contact.hasClass("away") ) return 1; else return 0; } function jid_to_id(jid) { return Strophe.getBareJidFromJid(jid).replace("@", "-").replace(".", "-"); } function getJID(contact) { return contact.find('.roster-jid').text(); } function insertContact(contact) { var presence = getPresence(contact); var jid = getJID(contact); var contacts = $('#roster li'); if (contacts.length > 0) { var inserted = false; contacts.each(function () { var locpres = getPresence($(this)); var locjid = getJID($(this)); if (presence > locpres) { $(this).before(contact); inserted = true; return false; } else { if (jid < locjid) { $(this).before(contact); inserted = true; return false; } } }); if (!inserted) $('#roster ul').append(contact); } else $('#roster ul').append(contact); } function onRoster(iq) { var elems = iq.getElementsByTagName('query'); var query = elems[0]; Strophe.forEachChild(query, 'item', function(item) { var jid = item.getAttribute('jid'); var name = item.getAttribute('name') || jid; var id = jid_to_id(jid); var contact = $("