//Initialization
var presence_ids = new Array("main");
var presence_interval = 30000;

//Updates server-side presence.
var presence_update = function(update) 
{
	if (update == undefined)
		update = true;
	new Request(
		{
			url:SITE_ROOT + "plugs/presence/",
			method:"post",
			"data":
				{
					"mode":"subscribe",
					"presenceids":JSON.encode(presence_ids)
				},
			onRequest:function()
			{},
			onComplete:function(result)
			{
				data = JSON.decode(result);
				if (data.error != undefined && data.error == "0") {
					if (update)
						presence_update.delay(presence_interval);
				} else {
					roar_queue.alert("Could not subscribe presence.", (data.error != undefined) ? data.error : "Unknown error.");
				}
			}
		}).send();
};

//Adds presence-ids on client-side and updated immediately server-side.
var presence_add = function(presenceidarray)
{
	presence_ids.append(presenceidarray);
	presence_update(false);
};

window.addEvent("load", function()
	{
		presence_update();
		
		Beacon.handler.add([["presence_add(main)", function(e)
		{
			if (e[0].user != null) {
				roar_queue.alert(e[0].user.Username + " is now online!", null);
			}
		}.bind(this)]]);
		Beacon.handler.add([["presence_remove(main)", function(e)
		{
			if (e[0].user != null) {
				roar_queue.alert(e[0].user.Username + " is now offline!", null);
			}
		}.bind(this)]]);
	});
