
// url_encode version 1.0  
function url_encode(str) {  
    var hex_chars = "0123456789ABCDEF";  
    var noEncode = /^([a-zA-Z0-9\_\-\.])$/;  
    var n, strCode, hex1, hex2, strEncode = "";  

    for(n = 0; n < str.length; n++) {  
        if (noEncode.test(str.charAt(n))) {  
            strEncode += str.charAt(n);  
        } else {  
            strCode = str.charCodeAt(n);  
            hex1 = hex_chars.charAt(Math.floor(strCode / 16));  
            hex2 = hex_chars.charAt(strCode % 16);  
            strEncode += "%" + (hex1 + hex2);  
        }  
    }  
    return strEncode;  
}  

// url_decode version 1.0  
function url_decode(str) {  
    var n, strCode, strDecode = "";  

    for (n = 0; n < str.length; n++) {  
        if (str.charAt(n) == "%") {  
            strCode = str.charAt(n + 1) + str.charAt(n + 2);  
            strDecode += String.fromCharCode(parseInt(strCode, 16));  
            n += 2;  
        } else {  
            strDecode += str.charAt(n);  
        }  
    }  
    return strDecode;  
}  

// A função abaixo pega a versão mais nova do xmlhttp do IE e verifica se é Firefox. Funciona nos dois.
function createXMLHTTP() 
{
	try 
    {
    	ajax = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    	catch(e) 
    {
   		try 
		{
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
			alert(ajax);
		}
		catch(ex) 
		{
			try 
			{
				ajax = new XMLHttpRequest();
			}
			catch(exc) 
			{
				alert("Esse browser não tem recursos para uso do Ajax");
				ajax = null;
			}
		}
		return ajax;
	}
	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 is not installed on your system.");
}

//--------------------------------------------
function BuscaInfo(sValor1, sValor2, sUrl, sRetorno, sCarregando, sMngCarregando)
{
	   // alert(sValor1 + " / " + sUrl + " / " + sRetorno + " / " + sCarregando);

    // Verifica se é para mostrar a imagem de carregando
    if (sMngCarregando != 'n')
    {
	    document.getElementById(sCarregando).innerHTML='<img src="../image/carregando.gif"> '
	}
	
// Criação do objeto XMLHTTP
	var oHTTPRequest = createXMLHTTP(); 
// Abrindo a solicitação HTTP. O primeiro parâmetro informa o método post/get
// O segundo parâmetro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc.
// O terceiro parametro informa que a solicitacao nao assincrona,
// Para solicitação síncrona, o parâmetro deve ser false
	oHTTPRequest.open("post", sUrl, true);
// Para solicitações utilizando o método post, deve ser acrescentado este cabecalho HTTP
	//oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oHTTPRequest.setRequestHeader('Content-Type',
                           "application/x-www-form-urlencoded; charset=iso-8859-1");
// A função abaixo é executada sempre que o estado do objeto muda (onreadystatechange)
	oHTTPRequest.onreadystatechange=function() 
	{
// O valor 4 significa que o objeto já completou a solicitação
		if (oHTTPRequest.readyState==4)
		{
// Abaixo o texto é gerado no arquivo executa.asp e colocado no div	
			document.getElementById(sRetorno).innerHTML  = oHTTPRequest.responseText;
			
            if (sMngCarregando != 'n')
            {
			    document.getElementById(sCarregando).innerHTML = '';
			}
		}
	}
// Abaixo é enviada a solicitação. Note que a configuração
// do evento onreadystatechange deve ser feita antes do send.
	oHTTPRequest.send("Item1=" + sValor1 + "&Item2=" + sValor2);
}


//--------------------------------------------
function BuscaInfo2(sValor1, sValor2, sUrl, sRetorno, sCarregando, sMngCarregando,blnRetorno)
{
	   // alert(sValor1 + " / " + sUrl + " / " + sRetorno + " / " + sCarregando);

    // Verifica se é para mostrar a imagem de carregando
    if (sMngCarregando != 'n')
    {
	    document.getElementById(sCarregando).innerHTML='<img src="../image/carregando2.gif"> '+sMngCarregando
	}
	
// Criação do objeto XMLHTTP
	var oHTTPRequest = createXMLHTTP(); 
// Abrindo a solicitação HTTP. O primeiro parâmetro informa o método post/get
// O segundo parâmetro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc.
// O terceiro parametro informa que a solicitacao nao assincrona,
// Para solicitação síncrona, o parâmetro deve ser false
	oHTTPRequest.open("post", sUrl, true);
// Para solicitações utilizando o método post, deve ser acrescentado este cabecalho HTTP
	//oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oHTTPRequest.setRequestHeader('Content-Type',
                           "application/x-www-form-urlencoded; charset=iso-8859-1");
// A função abaixo é executada sempre que o estado do objeto muda (onreadystatechange)
	oHTTPRequest.onreadystatechange=function() 
	{
// O valor 4 significa que o objeto já completou a solicitação
		if (oHTTPRequest.readyState==4)
		{
            if (sMngCarregando != 'n'){document.getElementById(sCarregando).innerHTML = '';}
            
			document.getElementById(sRetorno).innerHTML  = oHTTPRequest.responseText;
			
			if (blnRetorno == 'yes'){RetornoInfo(oHTTPRequest.responseText);}
		}
	}
// Abaixo é enviada a solicitação. Note que a configuração
// do evento onreadystatechange deve ser feita antes do send.
	oHTTPRequest.send("Item1=" + sValor1 + "&Item2=" + sValor2);
}

//Utilizada para executar uma funcao com um valor informado
function BuscaInfo3(sValor1, sValor2, sUrl, sRetorno, sCarregando, sMngCarregando,iFuncao)
{
	   // alert(sValor1 + " / " + sUrl + " / " + sRetorno + " / " + sCarregando);

    // Verifica se é para mostrar a imagem de carregando
    if (sMngCarregando != 'n')
    {
	    document.getElementById(sCarregando).innerHTML='<img src="../image/carregando2.gif"> '+sMngCarregando
	}
	
// Criação do objeto XMLHTTP
	var oHTTPRequest = createXMLHTTP(); 
// Abrindo a solicitação HTTP. O primeiro parâmetro informa o método post/get
// O segundo parâmetro informa o arquivo solicitado que pode ser asp, php, txt, xml, etc.
// O terceiro parametro informa que a solicitacao nao assincrona,
// Para solicitação síncrona, o parâmetro deve ser false
	oHTTPRequest.open("post", sUrl, true);
// Para solicitações utilizando o método post, deve ser acrescentado este cabecalho HTTP
	//oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oHTTPRequest.setRequestHeader('Content-Type',
                           "application/x-www-form-urlencoded; charset=iso-8859-1");
// A função abaixo é executada sempre que o estado do objeto muda (onreadystatechange)
	oHTTPRequest.onreadystatechange=function() 
	{
// O valor 4 significa que o objeto já completou a solicitação
		if (oHTTPRequest.readyState==4)
		{
            if (sMngCarregando != 'n'){document.getElementById(sCarregando).innerHTML = '';}
            
			document.getElementById(sRetorno).innerHTML  = oHTTPRequest.responseText;
			
			RetornoInfo(iFuncao);
		}
	}
// Abaixo é enviada a solicitação. Note que a configuração
// do evento onreadystatechange deve ser feita antes do send.
	oHTTPRequest.send("Item1=" + sValor1 + "&Item2=" + sValor2);
}