function criaXMLHttp() {
 if (typeof XMLHttpRequest != "undefined")
    return new XMLHttpRequest();
 else if (window.ActiveXObject){
    var versoes = ["MSXML2.XMLHttp.5.0",
    "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0",
    "MSXML2.XMLHttp", "Microsoft.XMLHttp"
    ];
 }
 for (var i = 0; i < versoes.length; i++){
    try{
        return new ActiveXObject(versoes[i]);
    }catch (e) {}
 }
 throw new Error("Seu browser nao suporta AJAX");
}

function enviaReq(oForm,repost){
	var sBody = criaReqStr(oForm);
	var oXMLHttp = criaXMLHttp();
	exibeResult("<center><img src='img/load.gif'></center>",repost);
	// 1o arg: usa o método post
	// 2o arg: envia a requisição post a página do formulário
	// 3o arg: usa o modo assincrono
	oXMLHttp.open("post", oForm.action, true);
	// importante.. a maioria das linguagens server-side verifica 
	// essa codificação para o parsing da informação
	oXMLHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oXMLHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	oXMLHttp.setRequestHeader("Pragma", "no-cache");

	oXMLHttp.onreadystatechange = function(){
		if(oXMLHttp.readyState >= 4) {
			if(oXMLHttp.status == 200){
				exibeResult(oXMLHttp.responseText,repost);
				doScript(oXMLHttp.responseText)
			}
		}
	}
	// depois de ser setado todos os parametros
	// é enviado os valores usando o método post
	oXMLHttp.send(sBody);
}

function criaReqStr(oForm){
	var aPostStr = new Array();
	for(var i = 0; i < oForm.elements.length; i++){
		var sValor = encodeURIComponent(oForm.elements[i].name);
		if ((oForm.elements[i].type == "checkbox") && (oForm.elements[i].checked)) {
			sValor += "=";
			sValor += encodeURIComponent(oForm.elements[i].value);
			aPostStr.push(sValor);
		} else if (oForm.elements[i].type != "checkbox") {
			sValor += "=";
			sValor += encodeURIComponent(oForm.elements[i].value);
			aPostStr.push(sValor);
		}
	}
	// retorna uma string no padrão "post request":
	// nome1=valor1&nome2=valor2&...&nomeN=valorN
	return aPostStr.join("&");
}

function doScript(texto){
    var ini, pos_src, fim, codigo;
    var objScript = null;
    ini = texto.indexOf('<script', 0);
    while (ini!=-1){
        var objScript = document.createElement("script");
        //Busca se tem algum src a partir do inicio do script
        pos_src = texto.indexOf(' src', ini)
        ini = texto.indexOf('>', ini) + 1;

        //Verifica se este e um bloco de script ou include para um arquivo de scripts
        if (pos_src < ini && pos_src >=0){//Se encontrou um "src" dentro da tag script, esta e um include de um arquivo script
            //Marca como sendo o inicio do nome do arquivo para depois do src
            ini = pos_src + 4;
            //Procura pelo ponto do nome da extencao do arquivo e marca para depois dele
            fim = texto.indexOf('.', ini)+4;
            //Pega o nome do arquivo
            codigo = texto.substring(ini,fim);
            //Elimina do nome do arquivo os caracteres que possam ter sido pegos por engano
            codigo = codigo.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("\'","").replace("\'","").replace(">","");
            // Adiciona o arquivo de script ao objeto que sera adicionado ao documento
            objScript.src = codigo;
        }else{//Se nao encontrou um "src" dentro da tag script, esta e um bloco de codigo script
            // Procura o final do script
            fim = texto.indexOf('</script>', ini);
            // Extrai apenas o script
            codigo = texto.substring(ini,fim);
            // Adiciona o bloco de script ao objeto que sera adicionado ao documento
            objScript.text = codigo;
        }

        //Adiciona o script ao documento
        document.body.appendChild(objScript);
        // Procura a proxima tag de <script
        ini = texto.indexOf('<script', fim);

        //Limpa o objeto de script
        objScript = null;
    }
}
function exibeResult(sTxt,div) {
	document.getElementById(div).innerHTML = sTxt;
}