

function A_innerHTML(url, id, jscode)
{
	makeRequest(url, 'innerHTML', id, jscode);
}

function A_value(url, id, jscode)
{
	makeRequest(url, 'ElementValue', id, jscode);
}

function A_variable(url, variable_id, jscode)
{
	makeRequest(url, 'Variable', variable_id, jscode);
}

function A_custom(callback, url, id)
{
	makeRequest(url, 'A_custom', callback, id);
}

function A_callback(url, callback)
{
	makeRequest(url, 'A_callback', callback);
}

function A_custom_multy(callback, url, id)
{
	makeRequest(url, 'A_custom_multy', callback, id);
}


function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
		if (xmlHttp.overrideMimeType)
		{
			xmlHttp.overrideMimeType('text/xml');
		}
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}


var ajax_status = null;

function makeRequest(url, type, params, params2)
{
	try
	{
		ajax_status = document.createElement("span");
		ajax_status.style.display = 'block';
		ajax_status.style.color = 'red';
		ajax_status.style.position = 'absolute';
		ajax_status.style.right = '0px';
		ajax_status.style.backgroundColor = 'yellow';
		ajax_status.innerHTML = 'Laen andmeid...';
		document.getElementById('ajax_messages').appendChild(ajax_status);
	}
	catch(e)
	{
	}

	var httpRequest=GetXmlHttpObject();

	if (!httpRequest)
	{
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	if (type == 'ElementValue')
	{
		httpRequest.onreadystatechange = function()
		{
			if (params)
			{
				ElementValue(httpRequest, params);
				if (params2)
				{
					eval(params2);
				}
			}
		};
	}
	else if (type == 'innerHTML')
	{
		httpRequest.onreadystatechange = function()
		{
			InnerHTMLValue(httpRequest, params);
			if (params2)
			{
				eval(params2);
			}
		};
	}
	else if (type == 'A_custom')
	{
		eval('httpRequest.onreadystatechange = function() { ' + params + '(httpRequest,params2); };');
	}
	else if (type == 'Variable')
	{
		eval('httpRequest.onreadystatechange = function() { A_VariableValue(httpRequest, params, params2);}');
	}
	else if (type == 'A_callback')
	{
		eval('httpRequest.onreadystatechange = function() {A_callbackReady(httpRequest, "'+params+'");};');
	}
	else if (type == 'A_custom_multy')
	{
		eval('httpRequest.onreadystatechange = function() { ' + params + '(' + params2 + ', httpRequest); };');
	}
	else
	{
		httpRequest.onreadystatechange = function()
		{
			alertContents(httpRequest, params);
		};
	}

	httpRequest.open('GET', url, true);
	httpRequest.send(null);

}


function alertContents(httpRequest)
{
	if (httpRequest.readyState == 4)
	{
		if (httpRequest.status == 200)
		{
			alert(httpRequest.responseText);
		}
		else
		{

		}
		A_close();
	}
}

function A_close()
{
	try
	{
		document.getElementById('ajax_messages').removeChild(ajax_status);
	}
	catch(e)
	{
	}
}

function A_VariableValue(httpRequest, variable, js)
{
	if (httpRequest.readyState == 4)
	{
		if (httpRequest.status == 200)
		{
			eval(variable + ' = httpRequest.responseText');
			if (js) eval(js);
			return true;
		}
		else
		{
			return false;
		}
	}
}


function InnerHTMLValue(httpRequest, id)
{
	if (httpRequest.readyState == 4)
	{
		if (httpRequest.status == 200)
		{
			document.getElementById(id).innerHTML = httpRequest.responseText;
		}
		else
		{
			alert('There was a problem with the request.');
		}
		A_close();
	}

}

function ElementValue(httpRequest, id)
{
	if (httpRequest.readyState == 4)
	{
		if (httpRequest.status == 200)
		{
			document.getElementById(id).value = httpRequest.responseText;
		}
		else
		{
			alert('There was a problem with the request.');
		}
		A_close();
	}
}


function A_callbackReady(httpRequest, callback)
{
	if (httpRequest.readyState == 4)
	{
		if (httpRequest.status == 200)
		{
			var responce = httpRequest.responseText;
			A_close();
			eval(callback);
		}
		else
		{
			alert('9818234 - There was a problem with the request.');
		}
		A_close();
	}
}