function createXMLHttpRequest() 
{
   try { return new XMLHttpRequest(); } catch(e) {}	// Firefox, Opera 8.0+, Safari
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}// Internet Explorer 6.0 and later   
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}// Internet Explorer 5.5
   alert("XMLHttpRequest not supported");
   return null;
}
/*
State	Description,   readyState property
0	The request is not initialized
1	The request has been set up
2	The request has been sent
3	The request is in process
4	The request is complete
*/
// exemplo: ajaxGet('url.php?'+"mytextarea1="+textEncode(field1.value)+"&mytextarea2="+textEncode(field2.value), 'nome_da_funcao_que_pega_o_result', false ou true);
function ajaxGet(url, callback_function, return_xml)
{
var xmlreq = createXMLHttpRequest();

	if(!xmlreq)
	{
		alert('Requisição não suportada');
		return false;
	}
	
	xmlreq.onreadystatechange = function() 
	{
		if (xmlreq.readyState == 4) {
		   if (xmlreq.status == 200) {
			   if (return_xml) {
				   eval(callback_function + '(xmlreq.responseXML)');
			   } else {
				   eval(callback_function + '(xmlreq.responseText)');
			   }
		   } else {
			   alert('There was a problem with the request.(Code: ' + xmlreq.status + ')');
		   }
		}
	}

	xmlreq.open("GET", url, true);//true:asynchronously
	//xmlreq.setRequestHeader("encoding", "ISO-8859-1");
	//xmlreq.setRequestHeader("charset", "ISO-8859-1");
	xmlreq.send(null);
}

// exemplo: ajaxPost('url.php', "mytextarea1="+textEncode(field1.value)+"&mytextarea2="+textEncode(field2.value), 'nome_da_funcao_que_pega_o_result', false ou true);
function ajaxPost(url, parameters, callback_function, return_xml)
{
var xmlreq = createXMLHttpRequest();

	if(!xmlreq)
	{
		alert('Requisição não suportada');
		return false;
	}
	
	xmlreq.onreadystatechange = function() 
	{
		if (xmlreq.readyState == 4) {
		   if (xmlreq.status == 200) {
			   if (return_xml) {
				   eval(callback_function + '(xmlreq.responseXML)');
			   } else {
				   eval(callback_function + '(xmlreq.responseText)');
			   }
		   } else {
			   alert('There was a problem with the request.(Code: ' + xmlreq.status + ')');
		   }
		}
	}

	xmlreq.open("POST", url, true);//true:asynchronously
	//xmlreq.setRequestHeader("encoding", "ISO-8859-1");
	//xmlreq.setRequestHeader("CharSet", "iso-8859-1");	
	xmlreq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlreq.setRequestHeader("Content-length", parameters.length);
	xmlreq.setRequestHeader("Connection", "close");	
	xmlreq.send(parameters);
}

function null_callback(text)
{
}

