/*
	Small library for ajax programming
*/
var xmlHttp;
// Записываем хендлер в отдельную переменную для совместимости с шестым ослом
var ajaxHandler;

function getParamsFromForm(form){
	params = ""
	for (i = 0; i < form.length; i++){
		box = form.elements[i];
		if (i!=0 && i!=form.length){ 
			params += "&";
		}
		params += box.name + "=" + box.value;
	}
	return params
}

function doAJAX(url, params, handler)
{
	xmlHttp=GetXmlHttpObject();
	params += "&ajax=0";
	if (xmlHttp==null)
	{
		alert ("Браузер не поддерживает запросы HTTP")
		return
	}	
	//alert("Hello2!");
	ajaxHandler = handler;
			//alert("Hello!");
	xmlHttp.onreadystatechange = stateChanged;
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(params);
}

/* Более продвинутая функция для аякса,
 * которая подхватывает форму и отправляет 
 * данные с нее
 */

function doAJAXGet(url)
{
	xmlHttp=GetXmlHttpObject();
		if (xmlHttp==null)
	{
		alert ("Браузер не поддерживает запросы HTTP")
		return false
	} 
	xmlHttp.onreadystatechange = smartResHandler;
	xmlHttp.open("GET",url,true);
	xmlHttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	xmlHttp.send(null);
}

function doAJAXPost(form)
{
	if (typeof(SITE_URI) == 'undefined'){
		alert('Error! SITE_URI isn\'t defined!')
		return false
	}
	
	params = getParamsFromForm(form)
	xmlHttp=GetXmlHttpObject();
	params += "&ajax=0";
		if (xmlHttp==null)
	{
		alert ("Браузер не поддерживает запросы HTTP")
		return false
	} 
	xmlHttp.onreadystatechange = smartResHandler;
	xmlHttp.open("POST",SITE_URI,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(params);
	return false
}
/*
 * Умный обработчик ответа аякса
 */

function smartResHandler(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
		eval(xmlHttp.responseText);
		//alert('All right!');
		// Дальше еще не придумал
	}	
}

function stateChanged(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
		ajaxHandler(xmlHttp.responseText);
	}
}
function GetXmlHttpObject()
{ 
	var objXMLHttp=null
	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		try {
			objXMLHttp = new ActiveXObject('Msxml2.XMLHTTP');
		} 
		catch (e) {
			try {
				objXMLHttp = new ActiveXObject('Microsoft.XMLHTTP');
			} 
			catch (e) {
			}
		}
	}
	return objXMLHttp
} 