/* executa o bloco try e se ocorrer erro executa também o bloco catch */
try{
	/*
	tenta criar um objeto XMLHTTP de acordo com os padrões para se criar um objeto HTTPREQUEST 
	*/
	requisicao=new XMLHttpRequest()
}catch(e){
	/*
	se ocorrer erro neste trecho executa um novo bloco try
	para IE 6 ou 5 precisa instanciar um objeto ActiveX para a versão 2 ou superiores da MSXML
	Bibblioteca de XML da Microsoft
	*/
	try{
		requisicao=new ActiveXObject("MSXML2.XMLHTTP")
		/* o IE 5 não suporta este formato */
	}catch(E){
		try{
			/* para IE 5 a versão 1 do MSXML */
			requisicao=new ActiveXObjetct("Microsoft.XMLHTTP")
		}catch(ee){
			/* se não houver suporte algum para Ajax */
			/* serve para testar se tem suporte a Ajax conforme exemplo abaixo */
			requisicao=false
		}
	}
}


/* variável Global */
ajax_callBack=false


function _req(){
	if(requisicao.readyState==4){
		ajax_callBack(requisicao.responseText)
	}
}


/* função de requisição req(url, query, destino)
   Parametros:
   url = abre a conexão com a url recebida (em modo assincrono)
   callBack = resposta de chegada de dados
   query = dados - forma GET ou POST
*/

function req(url,query,callBack)
{
    var status = false;
    var tipo_conteudo = "application/x-www-form-urlencoded; charset=UTF-8";
	
	if (typeof query == "undefined")
	{
		query=null
		var method="GET"
	}
	else
	{
		var method="POST"
	}
	
	ajax_callBack=callBack
	
	//Abre a conexão
	requisicao.open(method,url,true);
	//Envia os cabeçalhos
	requisicao.setRequestHeader("Content-Type", tipo_conteudo);
	//Envia a requisicao
	requisicao.send(query);
	
	requisicao.onreadystatechange=_req
}

/*
1. frmNome - Nome do formulário
2. url - arquivo para onde será enviado o POST
*/

function enviaAjax(frmNome,url,callBack)
{
	f = document.getElementById(frmNome);
	query="";
	j=0;
	for(i=0;i<f.elements.length;i++)
	{
		if((f.elements[i].type=='radio' || f.elements[i].type=='checkbox' )&& !(f.elements[i].checked))
		{
			f.elements[i].value='';
			
			if(f.elements[i].value!='')
			{
				query += j==0 ? '' : '&';
				query += f.elements[i].name + '=' + f.elements[i].value;
				j++;
			}
		}
		else
		{
			query += j==0 ? '' : '&';
			query += f.elements[i].name + '=' + f.elements[i].value;
			j++;
		}
	}
	//chama a função req() para enviar os dados ao arquivo .php que fará o processamento
	req(url,query,callBack);
}

