function createXMLHTTP() {
	var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
	var xmlhttp = false;
	for (var i=0; i < arrSignatures.length; i++) {
		try {
			var oRequest = new ActiveXObject(arrSignatures[i]);
			xmlhttp = oRequest;
			break;
		} catch (oError) {
		}
	}
	if(!xmlhttp && typeof XMLHttpRequest != 'undefined')
	{
		//PARA O FIREFOX
		xmlhttp = new XMLHttpRequest();
	}
	
	return xmlhttp;
}

function hargon(arquivo,resultado,variaveis,c,extrair)
{
	var oHTTPRequest = createXMLHTTP(); 
	arquivo = antiCacheRand(arquivo + ".asp");
	oHTTPRequest.open("post", arquivo, true);
	oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	oHTTPRequest.onreadystatechange=function() {
		if (oHTTPRequest.readyState==4){
			var result = oHTTPRequest.responseText;
			result = result.replace(/\+/g,' ');
			result = unescape(result);
			if (extrair != 1){
				extraiScript(result);
			}
			document.getElementById(resultado).innerHTML = result;
		}else{
			var carregar;
			if (c == 0){
		            carregar = "<div style='position:relative; display: inline;'> Carregando <img src='../imagens/design/carregando.gif' /></div>";
			}else if (c == 1){				
		            carregar = "";
			}else if (c == 2){
			    carregar = "";
			}else if (c == 4){
			    carregar = "<select name='optcdbairrocidade' tabindex='13' disabled='disabled' style='width: 150px;'><option value=''>Carregando...</option></select>";
			}else{
			    carregar = "<span style='background-color: #E6E6C4; color: #D2C884; position: absolute; float: right;'>Aguarde...</span>";
			}
			document.getElementById(resultado).innerHTML = carregar;
		}
	}
	oHTTPRequest.send(variaveis);
}

function URLDecode(psEncodeString)
{
  var lsRegExp = /\+/g;
  return unescape(String(psEncodeString).replace(lsRegExp, " "));
}

function xmlhttpPost(strURL,formulario,m,l) {
    var xmlHttpReq;
    var result;
	xmlHttpReq = createXMLHTTP();
    strURL = antiCacheRand(strURL);
    xmlHttpReq.open('POST', strURL, true);
    xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttpReq.onreadystatechange = function() {
        if (xmlHttpReq.readyState == 4) {
			result = xmlHttpReq.responseText;
			result = result.replace(/\+/g,' ');
			result = unescape(result);
			extraiScript(result);
			updatepage(result,m); 
			if (l == 1){
				cleanfields(formulario);
			}
			if (l == 4){
				document.getElementById(m).innerHTML = result;	
				document.getElementById(m).style.display = 'block';
			}else{
				document.getElementById(m).innerHTML = "";	
				document.getElementById(m).style.display = 'none';		
			}
		}else{
			document.getElementById(m).innerHTML = "<span style='background-color: #E6E6C4; color: #D2C884; position: absolute; float: left;'>Aguarde...</span>";
        }
    }
    xmlHttpReq.send(getquerystring(formulario));
}

function getquerystring(formulario) {
    	var form = document.forms[formulario];
	var qstr = "";
	
	for(var i = 0;i < form.elements.length;i++) {
		switch(form.elements[i].type) {
			case "text":
				qstr += form.elements[i].name + "=" + escape(form.elements[i].value) + "&";
				break;

			case "select-one": 
				qstr += form.elements[i].name + "=" + form.elements[i].options[form.elements[i].selectedIndex].value + "&";
				break;

			case "radio":
				if (form.elements[i].checked) {
					qstr += form.elements[i].name + "=" + escape(form.elements[i].value) + "&";
				}
				break;

			case "checkbox":
				if (form.elements[i].checked) {
					qstr += form.elements[i].name + "=" + escape(form.elements[i].value) + "&";
				}
				break;

			default:
				qstr += form.elements[i].name + "=" + escape(form.elements[i].value) + "&";
		}
	}
	qstr = qstr.substr(0,(qstr.length - 1));
    return qstr;
}

function cleanfields(formulario) {
	var form = document.forms[formulario];
	form.reset();
}

function updatepage(str,m){
    document.getElementById(m).innerHTML = str;
}

function handleEnter(event,pagina,formulario,m) {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
    xmlhttpPost(pagina,formulario,m);
    var form = document.forms[formulario];
    form.reset();
}
return false;
}

function extraiScript(texto){
//Maravilhosa função feita pelo SkyWalker.TO do imasters/forum
//http://forum.imasters.com.br/index.php?showtopic=165277&
    // inicializa o inicio ><
    var ini = 0;
    // loop enquanto achar um script
    while (ini!=-1){
        // procura uma tag de script
        ini = texto.indexOf('<script', ini);
        // se encontrar
        if (ini >=0){
            // define o inicio para depois do fechamento dessa tag
            ini = texto.indexOf('>', ini) + 1;
            // procura o final do script
            var fim = texto.indexOf('</script>', ini);
            // extrai apenas o script
            codigo = texto.substring(ini,fim);
            // executa o script
            //eval(codigo);
            /**********************
            * Alterado por Micox - micoxjcg@yahoo.com.br
            * Alterei pois com o eval não executava funções.
            ***********************/
            var novo = document.createElement("script")
            novo.text = codigo;
            document.body.appendChild(novo);
        }
    }
}

function antiCacheRand(aurl){
        var dt = new Date();
        if(aurl.indexOf("?")>=0){// já tem parametros
            return aurl + "&" + encodeURI(Math.random() + "_" + dt.getTime());
        }else{ return aurl + "?" + encodeURI(Math.random() + "_" + dt.getTime());}
}

function ajaxLoader(url,id)
{
	if (document.getElementById) {
		var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
	}
	if (x)
	{
		x.onreadystatechange = function()
		{
			if (x.readyState == 4 && x.status == 200)
			{
				el = document.getElementById(id);
				var resultado = x.responseText;
				extraiScript(resultado);
				el.innerHTML = resultado;
			}
		}
		x.open("GET", url, true);
		x.send(null);
	}
}
