var requests = new Array();

if(typeof(XMLHttpRequest) == 'undefined')
var XMLHttpRequest = function()
{
	var request = null;
	try
	{
		request = new ActiveXObject('');
	}
	catch(e)
	{
		try
		{
			request = new ActiveXObject('');
		}
		catch(ee)
		{}
	}
	return request;
}

function ajax_stop()
{
	for(var i=0; i<; i++)
	{
		if(requests[i] != null)
			requests[i].abort();
	}
}

function ajax_create_request(context)
{
	for(var i=0; i<; i++)
	{
		if(requests[i].readyState == 4)
		{
			requests[i].abort();
			requests[i].context = context;
			return requests[i];
		}
	}

	var pos = ;
	
	requests[pos] = Object();
	requests[pos].obj = new XMLHttpRequest();
	requests[pos].context = context;
	
	return requests[pos];
}

function ajax_request(url, data, callback, context)
{
	var request = ajax_create_request(context);
	var async = typeof(callback) == 'function';

	if(async)  = function()
	{
		if( == 4)
			callback(new ajax_response(request));
	}
	
	('POST', url, async);
	(data);
	
	if(!async)
		return new ajax_response(request);
}

function ajax_response(request)
{
	 = ;
	 = null;
	 = null;
	 = ;
	
	if( == 200)
	{
		try
		{
			 = object_from_json(request);
			
			if( && )
			{
				 = ;
				 = null;
			}
		}
		catch(e)
		{
			 = new ajax_error(, , );
		}
	}
	else
	{
		 = new ajax_error('HTTP request failed with status: ' + , );
	}
	
	return this;
}

function enc(s)
{
	return ().replace(/\%/g, "%26").replace(/=/g, "%3D");
}

function object_from_json(request)
{
	if( != null &&  != null &&  != '')
		return ;
	
	var r = null;	
	eval('r=' +  + ';');
	return r;
}

function ajax_error(name, description, number)
{
	 = name;
	 = description;
	 = number;

	return this;
}

ajax_ = function()
{
	return  + " " + ;
}

function json_from_object(o)
{
	if(o == null)
		return 'null';

	switch(typeof(o))
	{
		case 'object':
			if( == Array)		// checks if it is an array [,,,]
			{
				var s = '';
				for(var i=0; i<; ++i)
				{
					s += json_from_object(o[i]);

					if(i <  -1)
						s += ',';
				}

				return '[' + s + ']';
			}
			break;
		case 'string':
			return '"' + (/(["\\])/g, '\\$1') + '"';
		default:
			return String(o);
	}
}var ajaxVersion = '5.7.22.2';