function XmlHttpObject(onCompleteHandler, onErrorHandler, requestMethod, requestURL)
{ 
	var objXmlHttp		= null;//Referência ao objeto XMLHTTPRequest
	
	var requestHandler	= null;//Handler para requisições
	var completeHandler	= null;//Handler para requisições bem-sucedidas
	var errorHandler	= null;//Handler para requisições com erro	
	
	var requestFinished	= false;//Indica se a requisição já foi completada
	var requestMethod	= null;//Método com o qual a requisição será efetuada
	var requestURL		= null;//Página para a qual a requisição será direcionada
	
	var responseType	= "TEXT";
	
	this.setRequestMethod 	= function(method){requestMethod = method;}
	this.setRequestURL		= function(url){requestURL = url;}
	this.setResponseType	= function(type){responseType = type;}
	this.setRequestFinished	= function(mode){requestFinished = mode;}
	
	this.setRequestMethod(requestMethod);
	this.setRequestURL(requestURL);
	
	
	this.getRequestObject	= function(){return objXmlHttp;}
	this.getCompleteHandler	= function(){return completeHandler;}
	this.getErrorHandler	= function(){return errorHandler;}
	this.isRequestFinished	= function(){return requestFinished;}
	this.getRequestMethod	= function(){return requestMethod;}
	this.getRequestURL		= function(){return requestURL;}
	
	if (navigator.userAgent.indexOf("MSIE") != -1)
	{ 
		var strName="Msxml2.XMLHTTP";
		if(navigator.appVersion.indexOf("MSIE 5.5")>=0)
		{
			strName="Microsoft.XMLHTTP";
		} 
		try
		{ 
			objXmlHttp = new ActiveXObject(strName);
		} 
		catch(e)
		{
			return false;
		} 
	}	
	else if(window.XMLHttpRequest)objXmlHttp = new XMLHttpRequest()
	
	if(objXmlHttp != null)
	{
		if(window.coreHandler == null)
		{
			window.alert('O handler padrão de requisições não foi encontrado. Por favor, inclua o arquivo core.js.');
			return false;
		}
		
		if (navigator.userAgent.indexOf("MSIE") != -1)
		{ 
			try{objXmlHttp.onreadystatechange= window.coreHandler;requestHandler = window.coreHandler;} 
			catch(e){return false;} 
		}	
		else if(window.XMLHttpRequest)
		{
			objXmlHttp.onload = window.coreHandler
			objXmlHttp.onerror= window.coreHandler
			requestHandler	  = window.coreHandler
		}
	}
	
	if(typeof onCompleteHandler == 'function')completeHandler = onCompleteHandler;
	if(typeof onErrorHandler == 'function')errorHandler = onErrorHandler;
	
	this.startRequest = function(requestMethod, requestURL, requestParams)
	{
		if(requestMethod != null)this.setRequestMethod(requestMethod);
		if(requestMethod != null)this.setRequestURL(requestURL);
		
		if(requestMethod == null)throw new ConfigError(null,"O método HTTP da requisição não foi informado.");
		if(requestURL == null)throw new ConfigError(null,"O URL da requisição não foi informado.");
		
		if(requestParams != null && requestParams.length != null)		
		{
			var output = "";
			
			for(var counter = 0;counter < requestParams.length;counter++)
			{
				if(requestParams[counter] instanceof RequestParam)
					output += (output.length > 0 ? "&" : "") + requestParams[counter].toString();
			}
			
			requestParams = output;
			if(this.getRequestMethod().toUpperCase() == "GET" && requestParams.length > 0)this.setRequestURL(this.getRequestURL() + "?" + requestParams);
		}
		else
		{
			requestParams = null;
		}
		
		this.getRequestObject().open(requestMethod, requestURL);
		if(this.getRequestMethod().toUpperCase() == "POST" && requestParams.length > 0) 
			this.getRequestObject().setRequestHeader("Content-type","application/x-www-form-urlencoded; encoding=UTF-8");
		
		this.getRequestObject().send(this.getRequestMethod().toUpperCase() == "POST"
							&& requestParams != null && requestParams.length > 0 ? requestParams : null);
	}
	
	return this;
} 