function aplx_connection() 
{
	var obj;
	
	// Internet Explorer
	try 
	{
		obj = new ActiveXObject("Msxml2.XMLHTTP");
	} 
	catch (e) 
	{
		try 
		{
			obj = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch (e) 
		{
			obj = null;
		}
	}
	
	// Other browsers
	if(!obj && typeof XMLHttpRequest != "undefined")
		obj = new XMLHttpRequest();
		
	return obj;
}

function aplx_call ()
{
	var args = aplx_call.arguments;
	var remotefunction = args[0];
	
	var connection = aplx_connection();
	
	if (!connection)
		return false;
	
	var data = "function="+escape(remotefunction);
	for (i=0; i < arguments.length-1; i++) 
		data = data + "&arguments[]=" + escape(arguments[i]);
	
	var uri = document.location;
	connection.open("POST", uri, true);
	connection.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
	connection.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	
	connection.onreadystatechange = function() 
									{
										if (connection.readyState != 4) 
											return;
										var data = connection.responseText;
										args[args.length-1](data);
									}
	
	connection.send(data);
	delete connecton;
}

function aplx_call_by_uri ()
{
	var args = aplx_call_by_uri.arguments;
	var remotefunction = args[0];
	
	var connection = aplx_connection();
	
	if (!connection)
		return false;
	
	var uri = args[0];
	connection.open("POST", uri, true);
	connection.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
	connection.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	
	connection.onreadystatechange = function() 
									{
										if (connection.readyState != 4) 
											return;
										var data = connection.responseText;
										args[args.length-1](data);
									}
	
	
	connection.send('');
	delete connecton;
}

function update_id (id, content)
{
	var obj = document.getElementById(id);
	if (obj)
		obj.innerHTML = content;
}

