// AJAX functions

//--------------------
// Returns xmlhttp object
function AJAX_getXMLHTTP()
{
	var xmlhttp = false;
	try 
	{
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (E) {xmlhttp = false;}
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') xmlhttp = new XMLHttpRequest();

	if (!xmlhttp) return false;	//Error initing xmlhttp

	return xmlhttp;
}

var AJAX_respondents	= new Array(); //functions, that responds to requests

//--------------------
// Returns xmlhttp object
function AJAX_request(id, url, func, arguments, data)
{
	try
	{
		if (!func) return false;
		if (!url) return false;
		if (!id) return false;
		if (!data) data = false;
		if (!arguments) arguments = false;
		AJAX_respondents[id]	= {'url' : url, 'func' : func, 'arguments' : arguments};

		var XMLHTTP	= AJAX_getXMLHTTP();
		if (!XMLHTTP) return false;
	
		XMLHTTP.onreadystatechange = function () 
		{
		//-----------
			if (XMLHTTP.readyState != 4) return;	//Response not ready
			if (XMLHTTP.status != 200)	return; 	//Errors on connect
		//DEBUG INFO	saved response
		//					alert(xmlhttp.responseText);
		//					alert(xmlhttp.responseXML.xml);
		//					alert (xmlhttp.responseXML.parseError.reason+', '+xmlhttp.responseXML.parseError.line+', '+xmlhttp.responseXML.parseError.srcText+', '+xmlhttp.responseXML.parsed);
		
			AJAX_respondents[id]['func'](id, url, XMLHTTP);
		}
	
		XMLHTTP.open("POST", url, true);
		XMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		XMLHTTP.send(data);
	}
	catch (e) {return false;}
}



function AJAX_loadBlockContent(block_id, url, data, onload)
{
	if (!block_id) return false;
	var Block = document.getElementById(block_id);
	if (!Block) return false;
	if (!data) data = false;
	var arguments	= new Array();
	arguments['block']	= Block;
	if (onload) 	arguments['onload']	= onload;

	AJAX_request(block_id+Math.random(), url, AJAX_fillLoadedBlock, arguments, data);
}



function AJAX_fillLoadedBlock(id, url, XMLHTTP)
{
	Block	= AJAX_getArgument(id, 'block');
	if (!Block) return false;
	Block.innerHTML	= XMLHTTP.responseText;
	if (typeof(AJAX_respondents[id]['arguments']['onload']) != 'undefined') AJAX_respondents[id]['arguments']['onload'](id, url);
	
	return true;
}



function AJAX_getArgument(id, name)
{
	if (typeof(AJAX_respondents[id]['arguments'][name]) == 'undefined') return false;
	return AJAX_respondents[id]['arguments'][name];
}

