// возвращает объект AJAX
// by YS

function httpRequest(type){
	if(type == 'undefined') // 'text/xml', 'text/plain'
		type = 'text/plain';
	var httpRequest;
	if(window.XMLHttpRequest){ // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if(httpRequest.overrideMimeType){
			httpRequest.overrideMimeType(type);
			// See note below about this line
		}
	} else if(window.ActiveXObject){ // IE
		try{
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch(e){
			try{
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e){}
		}
	}
	return httpRequest;
}

// цепляет обработчик на onReady, передает запрос серваку
//	request - объект XMLHttpRequest;
//	func - ссылка на функцию-обработчик;
//	url - линк запроса;
//	mode - тип запроса (GET, POST, PUT)
//	send_data - передаваемые данные, в формате JSON
function makeRequest(request, func, url, mode, send_data){
	if(mode == null) mode = 'GET';
	if(!request)
		alert('Cannot create an XMLHTTP instance');
	request.onreadystatechange = function(){
		try {
			if(request.readyState == 4){
				if(request.status == 200){
					func();
				} else {
					alert(request.status + ' ' + request.statusText);
				}
			}
		}
		catch(e){
			//alert('Caught Exception: ' + e + ' - ' + e.description);
		}	
	}
	if(mode == 'GET')
		url += '?' + send_data;
	request.open(mode, url, true);
	if(send_data != null && mode == 'POST')
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(send_data);
}
