var BOSH_SERVICE = 'http://localhost:5280/http-bind/'; var show_log = false; Strophe.addNamespace("ADHOC", "http://jabber.org/protocol/commands"); var localJID = null; var connection = null; var sessionid = null; var cmdNode = null; function log(msg) { var entry = $('
').append(document.createTextNode(msg)); $('#log').append(entry); } function rawInput(data) { log('RECV: ' + data); } function rawOutput(data) { log('SENT: ' + data); } function onConnect(status) { if (status == Strophe.Status.CONNECTING) { log('Strophe is connecting.'); } else if (status == Strophe.Status.CONNFAIL) { log('Strophe failed to connect.'); showConnect(); } else if (status == Strophe.Status.DISCONNECTING) { log('Strophe is disconnecting.'); } else if (status == Strophe.Status.DISCONNECTED) { log('Strophe is disconnected.'); showConnect(); } else if (status == Strophe.Status.AUTHFAIL) { log('Authentication failed'); if (connection) { connection.disconnect(); } } else if (status == Strophe.Status.CONNECTED) { log('Strophe is connected.'); checkFeatures(); } } function addNote(elem, text, type) { if (!type) { type = "info"; } $(elem).append("" + text + "
"); } function addForm(elem, x) { var form = $(""); form.submit(function(){return false;}); var fieldset = $(""); form.append(fieldset); if ($(x).find("title").length > 0) $("").text($(x).find("title").text()).appendTo(fieldset); if ($(x).find("instructions").length > 0) $("").text($(x).find("instructions").text()).appendTo(fieldset); $(x).find("field").each(function(){ var item = null; var type = $(this).attr("type"); if($(this).attr("label")) { $("").text($(this).attr("label")).attr("for", $(this).attr("var")).appendTo(fieldset); } switch(type) { case "hidden": item = $(""); break; case "boolean": item = $(""); break; case "text-multi": item = $(""); break; case "text-single": item = $(""); break; case "fixed": item = $("").attr("readonly",true); break; case "jid-multi": item = $(""); break; case "jid-single": item = $(""); break; case "list-multi": item = $(""); $(this).find("option").each(function(){ $("").val($(this).find("value").text()).text($(this).attr("label")).appendTo(item); }); break; case "list-single": item = $(""); $(this).find("option").each(function(){ $("").val($(this).find("value").text()).text($(this).attr("label")).appendTo(item); }); break; case "text-private": item = $(""); break; default: item = $(""); } item.addClass("df-item"); if ($(this).find("value").length > 0) { var value = null; if ((type == "text-multi") || (type == "jid-multi")) { value = ""; $(this).find("value").each(function() { value = value + $(this).text() + "\n"; }); item.val(value); } else if (type == "list-multi") { value = new Array(); $(this).find("value").each(function() { value[value.length] = $(this).text(); }); } else { item.val($(this).find("value").text()); } } if ($(this).attr("var")) { item.attr("name", $(this).attr("var")); item.attr("id", $(this).attr("var")); } fieldset.append(item); fieldset.append("This entitiy does support AdHoc commands
"); } else { $('#output').append("This entitiy does NOT support AdHoc commands
"); } }); getCommandNodes(); } function showConnect() { var jid = $('#jid'); var pass = $('#pass'); var button = $('#connect').get(0); button.value = 'connect'; pass.show(); jid.show(); $('label').show(); $('#output *').remove(); return false; } function showDisconnect() { var jid = $('#jid'); var pass = $('#pass'); var button = $('#connect').get(0); button.value = 'disconnect'; pass.hide(); jid.hide(); $('label').hide(); return false; } $(document).ready(function () { connection = new Strophe.Connection(BOSH_SERVICE); if (show_log) { $('#log_container').show(); connection.rawInput = rawInput; connection.rawOutput = rawOutput; } $("#log_toggle").click(function () { $("#log").toggle(); }); $('#cred').bind('submit', function () { var button = $('#connect').get(0); var jid = $('#jid'); var pass = $('#pass'); localJID = jid.get(0).value; if (button.value == 'connect') { showDisconnect(); $('#log *').remove(); connection.connect(localJID, pass.get(0).value, onConnect); } else { connection.disconnect(); } return false; }); }); onunload = function() { if (connection) { connection.disconnect(); } }