js/supportchat.js

Thu, 18 Mar 2010 15:49:52 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Thu, 18 Mar 2010 15:49:52 +0000
changeset 16
ebc14a22a0c1
parent 15
071c513502d1
child 21
b691536ed125
permissions
-rw-r--r--

Switch to using a table of config options (will allow for easier configuration later)

/* Config */

var support_config = {
	login_domain: "anon.localhost",
	bosh_url: "/http-bind",
	team_rooms: {
		"Sales": "sales@support.localhost",
		"Technical": "technical@support.localhost"
	}
};

/*** XMPP handling */
var conn = null;

/* Called by Strophe when status of connection changes
   (from disconnected to connected, vice-versa, etc.)
*/
function handle_connection_status(status, err)
{
	if(status != Strophe.Status.CONNECTING && status != Strophe.Status.AUTHENTICATING)
		set_busy_status(false);
	else if(status != Strophe.Status.CONNECTED)
		set_busy_status(true);

	if(err)
		alert(err); //FIXME: Handle gracefully
}

/* Initiate the connection to the XMPP server */
function start_connection()
{
	conn = new Strophe.Connection(support_config.bosh_url);
	var ret = true;
	try
	{
		conn.connect(support_config.login_domain, null, handle_connection_status, 50);
	}
	catch(e)
	{
		ret = false;
	}
	return ret;
}


/*** UI handling */

/* Handle the user submitting the question form */
function on_question_submit()
{
	var question_type = $("#support-question-type").val();
	var question_name = $("#support-question-name").val();
	var question_text = $("#support-question-text").val();
	
	alert(question_name + " submitted a " + question_type + " question:\n " + question_text);
}

/* Update the UI according to whether we are
   waiting on a network operation
*/
function set_busy_status(status)
{
	//FIXME
}

function display_ui()
{
	// Display pop-up, showing question form
	if(start_connection())
	{
		$("#support-chat").show();
		$("#support-question-submit").click(on_question_submit);
	}
}

$(display_ui); //FIXME (debugging)

mercurial