//Объект пространства имен
var net = new Object();
net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;

//Конструктор

net.ContentLoader=function(url, onload, onerror, metod, param)
{
	this.url=url;
	this.req=null;
	this.onload=onload;
	this.param=param;
	this.onerror=(onerror) ? onerror : this.defaultError;
	this.loadXMLDoc(url);
}

net.ContentLoader.prototype={
	//Переименованная функция initXMLHttpRequest
	loadXMLDoc:function(url){
	//Реструктуризированная функция loadXML
	var xmlHTTP;
	try
	{
		xmlHTTP = new XMLHttpRequest();
	}
	catch(e)
	{
		var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0',
																		'MSXML2.XMLHTTP.5.0',
																		'MSXML2.XMLHTTP.4.0',
																		'MSXML2.XMLHTTP.3.0',
																		'MSXML2.XMLHTTP',
																		'Microsoft.XMLHTTP');
		for(var i=0; i<XmlHttpVersions.length && !xmlHTTP; i++)
		{
			try
			{
				xmlHTTP = new ActiveXObject(XmlHttpVersions[i]);
			}
			catch(e){}
		}
	}
	if(!xmlHTTP)
	{
		alert('Ошибка создания объекта');
	}
	else
	{
		this.req=xmlHTTP;
	}	
	if(this.req)
	{
		try
		{
			var loader=this;
			this.req.onreadystatechange=function(){
				loader.onReadyState.call(loader);
			}
			//Реструктуризированная функция sendRequest
			
			//this.req.open('POST', 'searchXML.php?q='+document.getElementById('user').value, true);//url+param
			if(this.param)
			{
				this.req.open('POST', this.url+this.param, true);//url+param		this.url
			}
			else
			{
				this.req.open('POST', this.url, true);
			}
			var contentType="application/x-www-form-urlencoded";
			this.req.setRequestHeader("Content-Type", contentType);
			this.req.send(null);
		}
		catch(err)
		{
			this.onerror.call(this);
		}
	}
},

//Реструктуризированная функция обратного вызова
onReadyState:function(){
	var req=this.req;
	var ready=req.readyState;
	if(ready==net.READY_STATE_COMPLETE)
	{
		var httpStatus=req.status;
		if(httpStatus==200 || httpStatus==0)
		{
			this.onload.call(this);
		}
		else
		{
			this.onerror.call(this);
		}
	}
},
defaultError:function(){
	alert("error fetching data!"
	+"\n\nreadyState:"+this.req.readyState
	+"\nstatus: "+this.req.status
	+"\nheaders: "+this.req.getAllResponseHeaders()
	+"\nparam: "+this.param
	+"\nurl :"+this.url
	);
}
}



