// Função que determina o objeto do browser a ser criado para o uso do AJAX
function RequisicaoBrowser () {
    if (typeof XMLHttpRequest != 'undefined') {
        return new XMLHttpRequest;
    }
    
    var aryOtherTypes = ['Microsoft.XMLHTTP','Msxml2.XMLHTTP','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Microsoft.XMLDOM'];
    
    for (intA=0; intA < aryOtherTypes.length; intA++) {
        try {
            return new ActiveXObject(aryOtherTypes[intA]);
        } catch(e) {
        }
    }    
}

// Função que faz o carregamento das páginas utilizando AJAX
function LoadPage (strArquivo,strObjetoCorpo) {
    var objBrowser   = new RequisicaoBrowser ();
    var objDadosTela = new MostrarDadosTela ();
    var objCorpo     = document.getElementById(strObjetoCorpo);

    objDadosTela.MostrarStatusCarregando (objCorpo);   

    objBrowser.open("POST","portal/" + strArquivo, true);     
    objBrowser.onreadystatechange = function () {        
        if (objBrowser.readyState == 4) {
            if (objBrowser.status == 200) {
                this.strResposta = objBrowser.responseText;                
                this.strResposta = this.strResposta.replace(/\+/g," ");
                this.strResposta = unescape(this.strResposta);
                
                objDadosTela.MostrarInformacoes (objCorpo,this.strResposta);
                
                ExecScript(this.strResposta);
            }
        }        
    }           
    
    objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");            
    objBrowser.send("set=get");
}

// Função que determina os arquivos a serem carregados, bem como mensagens de espera de carregamento das páginas
function MostrarDadosTela () {
    this.LimparTela = function (objTela) {
        objTela.innerHTML = "";
    }
       
    this.MostrarStatusCarregando = function (objCorpo) { 
        this.LimparTela (objCorpo);
        
        this.objNovoElemento = document.createElement("div");
        this.objNovoElemento.className = "CarregarDados";
        this.objNovoElemento.innerHTML = "Carregando, aguarde...";
        
        objCorpo.appendChild(this.objNovoElemento);
    }
    
    this.MostrarInformacoes = function (objCorpo,objResposta) {
        objCorpo.innerHTML = objResposta;
    }
}

// Função utilizada para executar javascript de páginas carregadas através do AJAX
function ExecScript(strInnerHTML) {
    var ini = 0;

    while (ini!=-1) {
        ini = strInnerHTML.indexOf('<script', ini);
        
        if (ini >=0) {
            ini = strInnerHTML.indexOf('>', ini) + 1;
            var fim = strInnerHTML.indexOf("<\/script>", ini);
            codigo = strInnerHTML.substring(ini,fim);
            var novo = document.createElement("script")
            novo.text = codigo;
            document.body.appendChild(novo);
        }
    }
}

// Função para montar os dados preenchidos no formulário para envio ao PHP
function LocalizarElementosFormulario (objElementosForm) {
    var strElementosEnviar = "";        
	
    this.ConcatenarElementos = function (strName, strValue) { 
        if (strElementosEnviar.length > 0) { 
            strElementosEnviar += "&";
        }
        strElementosEnviar += encodeURIComponent(strName) + "=" + encodeURIComponent(strValue);
    }        

    for (intElementosForm=0; intElementosForm < objElementosForm.length; intElementosForm++) {
        switch(objElementosForm[intElementosForm].type) {
            case 'text': case 'password': case 'hidden': case 'textarea': case 'select-one':
                this.ConcatenarElementos(objElementosForm[intElementosForm].name,objElementosForm[intElementosForm].value);
                break;
            case 'checkbox':
                if (objElementosForm[intElementosForm].checked == true) {
                    this.ConcatenarElementos(objElementosForm[intElementosForm].name,objElementosForm[intElementosForm].value);
                }
                break;
            case 'radio':
                if (objElementosForm[intElementosForm].checked == true) {
                    this.ConcatenarElementos(objElementosForm[intElementosForm].name,objElementosForm[intElementosForm].value);
                }
                break;
        }
    }

    return strElementosEnviar;
}

function ShowLoginBox (strBox) {
	document.getElementById(strBox).style.visibility = "visible";
}

function HideLoginBox (strBox) {
	document.getElementById(strBox).style.visibility = "hidden";
}

function Login(strArea) {
	var objBrowser   = new RequisicaoBrowser ();
	var objDadosTela = new MostrarDadosTela ();
	
	if (strArea == "Cliente") {
		var objCorpo = document.getElementById("MensagemAcessoCliente");
		var objForm  = document.LoginCliente ;
		var objBox    = "BoxLoginCliente";
	} else {
		var objCorpo     = document.getElementById("MensagemAcessoConsultor");
		var objForm  = document.LoginConsultor;
		var objBox    = "BoxLoginConsultor";
	}
    
	if (objForm.Usuario.value == "") {
		objDadosTela.MostrarInformacoes (objCorpo,"Campo 'Usuário' obrigatório!");
		return;
	}

	
	if (objForm.Senha.value == "") {
		objDadosTela.MostrarInformacoes (objCorpo,"Campo 'Senha' obrigatório!");
		return;
	}	
	
	objBrowser.open("POST", "portal/pagRequest.php?Request=Login&Tipo=" + strArea, true); 
	objBrowser.onreadystatechange = function () {
		if (objBrowser.readyState == 4) {
			if (objBrowser.status == 200) {
				this.strResposta = objBrowser.responseText;                
				this.strResposta = this.strResposta.replace(/\+/g," ");
				this.strResposta = unescape(this.strResposta);
				
				if (this.strResposta == "") {
					objDadosTela.MostrarInformacoes (objCorpo,"'Usuário' ou 'Senha' inválido!");
				} else {
					// Abre tela de Área restrita
				}
			}
		}        
	}                     
	objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
	objBrowser.send(LocalizarElementosFormulario(objForm.elements));
}

function EnviarContato() {
	var objBrowser   = new RequisicaoBrowser ();
	var objDadosTela = new MostrarDadosTela ();
	
	var objCorpo = document.getElementById("MensagemContato");
    
	if (document.Contato.nome.value == "") {
		objDadosTela.MostrarInformacoes (objCorpo,"Campo 'Nome' obrigatório!");
		return;
	}
	
	if (document.Contato.email.value == "") {
		objDadosTela.MostrarInformacoes (objCorpo,"Campo 'E-mail' obrigatório!");
		return;
	}	
	
	if (document.Contato.assunto.value == "") {
		objDadosTela.MostrarInformacoes (objCorpo,"Campo 'Assunto' obrigatório!");
		return;
	}	
	
	if (document.Contato.mensagem.value == "") {
		objDadosTela.MostrarInformacoes (objCorpo,"Campo 'Mensagem' obrigatório!");
		return;
	}		
	
	objBrowser.open("POST", "portal/pagRequest.php?Request=EnviarContato", true); 
	objBrowser.onreadystatechange = function () {
		if (objBrowser.readyState == 4) {
			if (objBrowser.status == 200) {
				this.strResposta = objBrowser.responseText;                
				this.strResposta = this.strResposta.replace(/\+/g," ");
				this.strResposta = unescape(this.strResposta);
				
				objDadosTela.MostrarInformacoes (objCorpo,this.strResposta);
			}
		}        
	}                     
	objBrowser.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        
	objBrowser.send(LocalizarElementosFormulario(document.Contato.elements));
}
