/***************************************************************************************************************
@Tipo Arquivo: 		JS - Java Script
@Dt. Atualizacao: 	2009-04-17
@Versão:			1.0
@Autor: 			Eduardo Chiaradia (Dunix)
@MSN | E-Mail:		eduardo_chiaradia@hotmail.com
@OBS:				O Conteudo desta pagina tem como objetivo utilizar de maneira facil e dinamica a metodologia ajax.


@Funcoes neste Arquivo
	
	001		$Ajax_Field				Retorna o Resultado do Ajax em um CAMPO da tela
	002		$Ajax_Layer				Retorna um Resultado de Ajax dentro de uma CAMADA
	003		$Ajax_ReplaceSpace		Essa função Substitui o caracter espaço pela sua representacao numerica
	004		$Ajax_Return				Esta função resume o uso da função ajax, retornando para uma VARIAVEL
	005		$Ajax_Array				Esta função resume o uso da função ajax, retornando para uma varivel ARRAY
	006		$CreateXMLHTTP			É a Alma do Ajax, é a Função que processa as Informações do Ajax


***************************************************************************************************************/



function $Ajax_Field(pagina,parameters,camada_carregando,campo){
	/*
	Esta função resume o uso da função ajax, retornando para uma camada
	*/

	var Retorno="";		
	var oHTTPRequest = CreateXMLHTTP(); //crio o ajax
	
	oHTTPRequest.open("post", pagina, true); //chamo a pagina que irá processar os dados
	oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //identifico o conteudo da pagina		

	oHTTPRequest.onreadystatechange=function(){   

			   if (camada_carregando!=""){ //verifico se tenho alguma div para mostrar o carregando, posso trocar por imagem
				   document.getElementById(camada_carregando).innerHTML="<img src='../../imgs/carregando.gif' border=0>carregando..";
			   }
   
			   if (oHTTPRequest.readyState==4)
					{

						    Retorno= oHTTPRequest.responseText;	//trago o retorno da pagina			
							
							if (camada_carregando!=""){ //verifico se tenho alguma div para mostrar o carregando, posso trocar por imagem
								document.getElementById(camada_carregando).innerHTML=""; //limpo a div que tinha o carregando						
			   				}
							

							campo.value = Retorno; //Aqui eu coloco o resultado no campo
							
					}
	}

	oHTTPRequest.send($Ajax_ReplaceSpace(parameters)); //passo parametros pelo metodo post para a pagina que escolhi acima	

	
}




function $Ajax_Layer(pagina,parameters,camada_carregando,camada_resultado){
	/*
	Esta função resume o uso da função ajax, retornando para uma camada
	*/
	if(pagina!=""){
			
		var Retorno="";		
		var oHTTPRequest = CreateXMLHTTP(); //crio o ajax
		
		oHTTPRequest.open("post", pagina, true); //chamo a pagina que irá processar os dados
		oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //identifico o conteudo da pagina		
	
		oHTTPRequest.onreadystatechange=function(){   
	
				   if (camada_carregando!=""){ //verifico se tenho alguma div para mostrar o carregando, posso trocar por imagem
					   document.getElementById(camada_carregando).innerHTML="<img src='imagens/carregando.gif' border=0>carregando..";
				   }
	   
				   if (oHTTPRequest.readyState==4)
						{
								Retorno= oHTTPRequest.responseText;	//trago o retorno da pagina		
								
								if (camada_carregando!=""){ //verifico se tenho alguma div para mostrar o carregando, posso trocar por imagem
									   document.getElementById(camada_carregando).innerHTML=""; //limpo a div que tinha o carregando
								}
								
								
								
								if (camada_resultado!=""){ //verifico se vou mostrar o resultado da pagina em alguma div
									   document.getElementById(camada_resultado).innerHTML= Retorno; //se sim mostro
										
							   }			
						}
		}
	
		oHTTPRequest.send($Ajax_ReplaceSpace(parameters)); //passo parametros pelo metodo post para a pagina que escolhi acima
	
	}
	else{
		document.getElementById(camada_carregando).innerHTML="";
		document.getElementById(camada_resultado).innerHTML= "";
	}
}


function $Ajax_ReplaceSpace(variavel){
			
	//retira os espacos e substitui pelo caracter correto
	for (x=0;x<=variavel.length;x++)
	{
		variavel=variavel.replace(' ','%20');
		variavel=variavel.replace('\n','<br>');
	}

	return  variavel;

}

function $Ajax_Return(pagina,parameters,camada_carregando){
	/*
	Esta função resume o uso da função ajax, retornando para uma varivel
	*/

	var Retorno=$Ajax_Exec();
	return Retorno;
	
	
	function $Ajax_Exec(){	
	
			var vlRetorno="";
			var oHTTPRequest = CreateXMLHTTP(); //crio o ajax			
			oHTTPRequest.open("POST", pagina, false); //chamo a pagina que irá processar os dados
			oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //identifico o conteudo da pagina				
			oHTTPRequest.send($Ajax_ReplaceSpace(parameters)); //passo parametros pelo metodo post para a pagina que escolhi acima				
			vlRetorno= oHTTPRequest.responseText;
			return vlRetorno;
	}
	
}


function $Ajax_Array(pagina,parameters,camada_carregando,separacao){
	/*
	Esta função resume o uso da função ajax, retornando para uma varivel array
	*/	
	var Retorno=$Ajax_Return(pagina,parameters,camada_carregando);
	Retorno = Retorno.split(separacao);
	return Retorno;
	
	
}




function CreateXMLHTTP(){
	/*
	Essa função é responsavel por qualquer tipo de rotina em Ajax,
	digamos que ela é a alma do Ajax	
	*/

	try{
		
		vajax = new ActiveXObject("Microsoft.XMLHTTP");
		
	}

	catch(e){
			   
			   try
			   {
					vajax = new ActiveXObject("Msxml2.XMLHTTP");
					alert(vajax);
			   }
			   
			   
			   catch(ex)
			   {
				   
				   try
				   {
							   vajax = new XMLHttpRequest();
				   }
				   catch(exc){
								alert("Esse browser não tem recursos para uso do Ajax");
								vajax = null;
				   }
				   
			   }

				return vajax;
	}
	
	
	var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
	"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
	"Microsoft.XMLHTTP"];
	
	for (var i=0; i < arrSignatures.length; i++) {
		
		  try {
				var oRequest = new ActiveXObject(arrSignatures[i]);
				return oRequest;
		  } 
		  catch (oError) {
			  
		  }
				  
	}
	
	throw new Error("MSXML não está instalado em seu sistema.");
	
}						  



