function BUJax()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch(e)
	{
		// Internet Explorer
		try
		{
			xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch(e)
		{
			xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
		}
	}
	
	this.bujax = xmlHttp;
}

BUJax.prototype.execute_ajax = function(file, params, fn)
{
	var bjax = this.bujax;
	bjax.onreadystatechange = function()
	{
		if(bjax.readyState == 4)
		{
			var str = fn+'("'+encodeHtml(bjax.responseText)+'");';
			eval(str);
		}
	}
	this.bujax.open('POST', 'ajax.php?act='+file, true);
	this.bujax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	this.bujax.setRequestHeader("Content-length", params.length);
	this.bujax.setRequestHeader("Connection", "close");
	this.bujax.send(params);
}

function encodeHtml(str)
{
	encodedHtml = escape(str);
    encodedHtml = encodedHtml.replace(/\//g,"%2F");
    encodedHtml = encodedHtml.replace(/\?/g,"%3F");
    encodedHtml = encodedHtml.replace(/=/g,"%3D");
    encodedHtml = encodedHtml.replace(/&/g,"%26");
    encodedHtml = encodedHtml.replace(/@/g,"%40");
    return encodedHtml;
}