var CAjax =
{
	data: '',
	inquiryList: {},
	inquiryCNT:0,

	getHttpRequest: function (f)
	{
		var HttpRequest = null;
		if (window.XMLHttpRequest) {
			try {HttpRequest = new XMLHttpRequest();} catch(e){}
		} else if (window.ActiveXObject) {
			try {HttpRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch(e){}
			if (!HttpRequest)
				try {HttpRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e){}
		}

		return HttpRequest;
	},


	makeInquiry: function (url, contactor, post, Func, addFunc)
	{
		while (true)
		{
			var ID = 'ID' + Math.floor(Math.random() * 1000000);
			if (!this.inquiryList[ID]) break;
		}

		this.inquiryList[ID] = new AjaxProcess();
		this.inquiryList[ID].HttpRequest = this.getHttpRequest();
		this.inquiryList[ID].ID = ID;

		this.inquiryList[ID].url = url;
		this.inquiryList[ID].contactor = contactor;
		this.inquiryList[ID].post = post;
		this.inquiryList[ID].finalFunction = Func;
		this.inquiryList[ID].additionalFunction = addFunc;

		return ID;
	},

	Inquiry: function(ID)
	{
		if (typeof(this.inquiryList[ID].post) == 'object')
			post = this.processPost(this.inquiryList[ID].post);
		else
			post = '';

		if (!this.inquiryList[ID].url)
			this.inquiryList[ID].url = self.parent.location;




			// Открыть соединение с сервером
		this.inquiryList[ID].HttpRequest.open('POST', this.inquiryList[ID].url, true);

		this.inquiryList[ID].HttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

			// Устанавливаем функцию для обработки ответа
		this.inquiryList[ID].HttpRequest.onreadystatechange = this.inquiryList[ID].Processing;


			// Передать запрос
		this.inquiryList[ID].HttpRequest.send(post);
		this.inquiryCNT++;
	},

	processPost: function (arPost, do_key)
	{
		var post = '';
		for (var key in arPost)
		{
			if (post) {post += '&';}

			if (do_key)
				name = do_key + '[' + key + ']';
			else
				name = key;

			if (typeof(arPost[key]) == 'object')
				post += CAjax.processPost(arPost[key], name)
			else
				post += name + '=' + arPost[key];
		}
		return post;
	}
}


function AjaxProcess()
{
	var _this = this;
	this.ID = false;
	this.HttpRequest = false;

	this.url = false;
	this.contactor = false;
	this.post = false;
	this.finalFunction = false;
	this.additionalFunction = false;

	this.data = false;



	this.Processing = function()
	{
		if (_this.HttpRequest.readyState == 4) {
			CAjax.inquiryCNT = CAjax.inquiryCNT - 1;
			_this.data = _this.HttpRequest.responseText;

			if (_this.finalFunction)
				_this.finalFunction(_this);
		}
	}
}

















var HttpRequest = null;
if (window.XMLHttpRequest)
{
	try {HttpRequest = new XMLHttpRequest();} catch(e){}
}
else if (window.ActiveXObject)
{
	try {HttpRequest = new ActiveXObject("Microsoft.XMLHTTP");} catch(e){}
	if (!HttpRequest)
		try {HttpRequest = new ActiveXObject("Msxml2.XMLHTTP");} catch (e){}
}


