/*
--------------------------------------------------------------------
 Arquivo:			forms.js
 Autor:				Gilson Hoffmeister
 E-mail:			gilsonh@feevale.br
 Data da Criação:	18/02/2005
 Última Alteração:	Rodrigo S. Donini
 E-mail:			donini@feevale.br
 Alterado em:		23/02/2005
--------------------------------------------------------------------
*/

/*
--------------------------------------------------------------------
 Função para item selecionado no select (combo box)
 
 - strJanela:		Nome da Janela que será aberto o link;
 - objSelecao:		Objeto <option> (utilizado this);
 - bolRetornar:		Boleano se informa se o select ficará no <option>
 					selecionado ou se retornará para a primeira posição
--------------------------------------------------------------------
*/
function fntAbrirSelecao(strJanela, objSelecao, bolRetornar) //v1.0
{ 
	// Se for valor do option for branco, não executa o redirecionamento
	if (objSelecao.options[objSelecao.selectedIndex].value != "")
	{
		eval(strJanela + ".location='" + objSelecao.options[objSelecao.selectedIndex].value + "'");
	}
	// Se for verdadeiro, o select retorna para a primeira opção
	if (bolRetornar)
	{
		objSelecao.selectedIndex = 0;
	}
}

/*
--------------------------------------------------------------------
 Função que elimina espaços a esquerda e direita da string

 - strString:		Texto que será percorrido;

--------------------------------------------------------------------
*/
function fntTrim(strString) //v1.0
{
	if (strString != "" && strString != null)
	{
		while (((strString.indexOf(" ") == 0) && (strString.indexOf(" ") != -1)) || ((strString.lastIndexOf(" ") == strString.length-1) && (strString.lastIndexOf(" ") != -1)))
		{
			strString = strString.replace(/^ /,"");
			strString = strString.replace(/ $/,"");
		}		
	}
	return(strString);
}

/*
--------------------------------------------------------------------
 Função que valida o formato do e-mail

 - strEmail:		E-mail a ser validado

--------------------------------------------------------------------
*/
function fntValidarEmail(strEmail) //v1.0
{
	var strEmailPat = /^(.+)@(.+)$/
	var strCaracteresEspecias = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]?&'%~#´`"
	var strCaracteresValidos = "\[^\\s" + strCaracteresEspecias + "\]"
	var strQuotedUser = "(\"[^\"]*\")"
	var strIpDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var strAtom = strCaracteresValidos + '+'
	var strWord = "(" + strAtom + "|" + strQuotedUser + ")"
	var strUserPat = new RegExp("^" + strWord + "(\\." + strWord + ")*$")
	var strDomainPat = new RegExp("^" + strAtom + "(\\." + strAtom +")*$")
	
	var matchArray = strEmail.match(strEmailPat)
	if (matchArray == null)
	{
		return(false)
	}
	var user = matchArray[1]
	var domain = matchArray[2]
	
	if (user.match(strUserPat) == null)
	{
	    return(false)
	}
	
	var IPArray = domain.match(strIpDomainPat)
	if (IPArray != null)
	{
		for (var i = 1; i <= 4; i++)
		{
			if (IPArray[i] > 255)
			{
				return(false)
			}
		}
		return true
	}
	
	var domainArray = domain.match(strDomainPat)
	if (domainArray == null)
	{
	    return(false)
	}
	
	var atomPat = new RegExp(strAtom,"g")
	var domArr = domain.match(atomPat)
	var len = domArr.length
	if (domArr[domArr.length - 1].length < 2 || domArr[domArr.length - 1].length > 3)
	{
	   return(false)
	}
	
	if (len < 2)
	{
	   return(false)
	}
	
	return true;
}

/*
--------------------------------------------------------------------
 Função que valida o formulário do Fale com a Feevale
 A ordem dos elementos está ao contrário para a foco ir para o
 primeiro elemento que ocorreu o erro.
--------------------------------------------------------------------
*/
function fntEnviarContato() //v1.0
{
	var objForm = document.frmContato;
	var objMensagem = document.getElementById("txtErroMensagem");
	var objResposta = document.getElementById("txtErroResposta");
	var objTelefone = document.getElementById("txtErroTelefone");
	var objEmail = document.getElementById("txtErroEmail");
	var objNome = document.getElementById("txtErroNome");
	var objErro = document.getElementById("txtErroAviso");
	var strAviso = "*";
	var strErro = "";
	var bolErro = false;
	var bolEmail = false;

	// Zerando as mensagens de erro
	objMensagem.innerHTML = "";
	objResposta.innerHTML = "";
	objTelefone.innerHTML = "";
	objEmail.innerHTML = "";
	objNome.innerHTML = "";
	objErro.innerHTML = "";

	// Mensagem
	if (fntTrim(objForm.strMensagem.value) == "")
	{
		objMensagem.innerHTML = strAviso;
		bolErro = true;
		objForm.strMensagem.focus();
	}
	
	// Resposta
	if (fntTrim(objForm.intResposta.value) == "")
	{
		objResposta.innerHTML = strAviso;
		bolErro = true;
		objForm.intResposta.focus();
	}
	// Testes adicionados conforme solicitacao 148018
	// Telefone
	if ((fntTrim(objForm.intResposta.value) == "2") && (fntTrim(objForm.strTelefone.value) == ""))
	{
		objTelefone.innerHTML = strAviso;
		bolErro = true;
		objForm.strTelefone.focus();
	}
	// Testes adicionados conforme solicitacao 148018
	// E-mail
	if ((fntTrim(objForm.intResposta.value) == "1") && (fntTrim(objForm.strEmail.value) == ""))
	{
		objEmail.innerHTML = strAviso;
		bolErro = true;
		objForm.strEmail.focus();
	}
	else if (fntTrim(objForm.strEmail.value) != "")
	{
		if (!fntValidarEmail(objForm.strEmail.value))
		{
			objEmail.innerHTML = "**";
			bolEmail = true;
			objForm.strEmail.focus();
		}
	}
	// Nome
	if (fntTrim(objForm.strNome.value) == "")
	{
		objNome.innerHTML = strAviso;
		bolErro = true;
		objForm.strNome.focus();
	}

	if (bolErro || bolEmail)
	{
		if (bolErro)
		{
			strErro = "<br />* O campo não pode estar em branco";
		}
		if (bolEmail)
		{
			strErro = strErro + "<br />** O e-mail está incorreto";
		}
		objErro.innerHTML = strErro;
		return(false);
	}

}

/*
--------------------------------------------------------------------
 Função que valida o formulário do Enviar por E-mail
 A ordem dos elementos está ao contrário para a foco ir para o
 primeiro elemento que ocorreu o erro.
--------------------------------------------------------------------
*/
function fntEnviarEmail() //v1.0
{
	var objForm = document.frmEnviarEmail;
	var objMensagem = document.getElementById("txtErroMensagem");
	var objEmailDestinatario = document.getElementById("txtErroEmailDestinatario");
	var objNomeDestinatario = document.getElementById("txtErroNomeDestinatario");
	var objEmail = document.getElementById("txtErroEmail");
	var objNome = document.getElementById("txtErroNome");
	var objErro = document.getElementById("txtErroAviso");
	var strAviso = "*";
	var strErro = "";
	var bolErro = false;
	var bolEmail = false;

	// Zerando as mensagens de erro
	objMensagem.innerHTML = "";
	objEmailDestinatario.innerHTML = "";
	objNomeDestinatario.innerHTML = "";
	objEmail.innerHTML = "";
	objNome.innerHTML = "";
	objErro.innerHTML = "";

	// Mensagem
	if (fntTrim(objForm.strMensagem.value) == "")
	{
		objMensagem.innerHTML = strAviso;
		bolErro = true;
		objForm.strMensagem.focus();
	}
	
	// E-mail Destinatario
	if (fntTrim(objForm.strEmailDestinatario.value) == "")
	{
		objEmailDestinatario.innerHTML = strAviso;
		bolErro = true;
		objForm.strEmailDestinatario.focus();
	}
	else
	{
		if (!fntValidarEmail(objForm.strEmailDestinatario.value))
		{
			objEmailDestinatario.innerHTML = "**";
			bolEmail = true;
			objForm.strEmail.focus();
		}
	}

	// Nome Destinatario
	if (fntTrim(objForm.strNomeDestinatario.value) == "")
	{
		objNomeDestinatario.innerHTML = strAviso;
		bolErro = true;
		objForm.strNomeDestinatario.focus();
	}

	// E-mail
	if (fntTrim(objForm.strEmail.value) == "")
	{
		objEmail.innerHTML = strAviso;
		bolErro = true;
		objForm.strEmail.focus();
	}
	else
	{
		if (!fntValidarEmail(objForm.strEmail.value))
		{
			objEmail.innerHTML = "**";
			bolEmail = true;
			objForm.strEmail.focus();
		}
	}

	// Nome
	if (fntTrim(objForm.strNome.value) == "")
	{
		objNome.innerHTML = strAviso;
		bolErro = true;
		objForm.strNome.focus();
	}

	if (bolErro || bolEmail)
	{
		if (bolErro)
		{
			strErro = "<br />* O campo não pode estar em branco";
		}
		if (bolEmail)
		{
			strErro = strErro + "<br />** O e-mail está incorreto";
		}
		objErro.innerHTML = strErro;
		return(false);
	}

}

/*
--------------------------------------------------------------------
 Função que valida o formulário dos Links Personalizados
--------------------------------------------------------------------
*/
function fntLinksPersonalizados()
{
	var objForm = document.frmLinks;
	var intContador = 0;
	var intSelecionado = 0;

	// Laço que verifica quantos checkbox existem no form
	for (intContador = 0; intContador < objForm.chkLink.length; intContador++)
	{
		// Laço que conta quantos checkbox foram selecionados
		if (objForm.chkLink[intContador].checked)
		{
			intSelecionado = intSelecionado + 1;
		}
	}
	
	// Laço que desabilita os checkbox após o 8º selecionado
	if (intSelecionado >= 8)
	{
		for (intContador = 0; intContador < objForm.chkLink.length; intContador++)
		{
			if (!objForm.chkLink[intContador].checked)
			{
				objForm.chkLink[intContador].disabled = true;
			}
		}
	}
	else
	{
		for (intContador = 0; intContador < objForm.chkLink.length; intContador++)
		{
			objForm.chkLink[intContador].disabled = false;
		}	
	}
}

/*
--------------------------------------------------------------------
 Função que seleciona o foco para os formulários
--------------------------------------------------------------------
*/
function fntFocus(strNomeForm)
{
	var intContador = 0;
	var objForm = eval("document." + strNomeForm);

	// Laço para pegar o primeiro campo em branco
	for (intContador = 0; intContador < objForm.length; intContador++)
	{
		if (objForm.elements[intContador].value == "")
		{
			objForm.elements[intContador].focus();
			break;
		}
	}
}

/*
--------------------------------------------------------------------
 Função que valida o formulário da Newsletter
 A ordem dos elementos está ao contrário para a foco ir para o
 primeiro elemento que ocorreu o erro.
--------------------------------------------------------------------
*/
function fntEnviarNewsletter() //v1.0
{
	var objForm = document.frmNewsletter;
	var objEmail = document.getElementById("txtErroEmail");
	var objErro = document.getElementById("txtErroAviso");
	var strErro = "";
	var bolErro = false;
	var bolEmail = false;
	var strAviso = "*";

	// Zerando as mensagens de erro
	objEmail.innerHTML = "";
	objErro.innerHTML = "";

	// E-mail
	if (fntTrim(objForm.strEmail.value) == "")
	{
		objEmail.innerHTML = strAviso;
		bolErro = true;
		objForm.strEmail.focus();
	}
	else
	{
		if (!fntValidarEmail(objForm.strEmail.value))
		{
			objEmail.innerHTML = "**";
			bolEmail = true;
			objForm.strEmail.focus();
		}
	}


	if (bolErro || bolEmail)
	{
		if (bolErro)
		{
			strErro = "<br />* O campo E-mail não pode estar em branco.";
		}
		if (bolEmail)
		{
			strErro = strErro + "<br />** O formato do e-mail está incorreto.";
		}
		objErro.innerHTML = strErro;
		return(false);
	}else{
		return(true);
	}
}

/*valida enquete*/
function fntValidarVotoEnquete(form) //v1.0
{
	var campos = form.getElementsByTagName('input');
	var dados = "";
	for (var x=0; x < campos.length; x++){
		if(((campos[x].type == "radio") && campos[x].checked)){		
			if(campos[x].value != ""){
				dados += campos[x].value;
			}			
		}
	}
	if((dados == "")){
		alert('Selecione uma opção.');
		form.botaoEnvia.disabled = false;
	}
	return (dados != "");
}

/*valida enquete*/
function fntValidarEnvioSugestao(form) //v1.0
{
	if(fntTrim(form.strDe.value).replace(' ','') == "seunome:"){
		alert('Preencha seu nome.');
		form.strDe.focus();
		form.botaoEnvia.disabled = false;
		return false;
	}else if(!fntValidarEmail(fntTrim(form.strEmailDe.value))){
		alert('Preencha seu e-mail.');
		form.strEmailDe.focus();
		form.botaoEnvia.disabled = false;
		return false;
	}else if(fntTrim(form.strPara.value) == "para:"){
		alert('Preencha o nome de quem irá receber a mensagem.');
		form.strPara.focus();
		form.botaoEnvia.disabled = false;
		return false;
	}else if(fntTrim(form.strEmailPara.value) == "e-mail:"){
		alert('Preencha o e-mail de quem irá receber a mensagem.');
		form.strEmailPara.focus();
		form.botaoEnvia.disabled = false;
		return false;
	}else{
		return true;
	}	
}

function ValidaCodigo(obj,num)
{
    var Codigo = obj.value;
    var erro = 0;	

    if (Codigo != "")
       {	   
	for (var i = 0; i < Codigo.length; i++)
            {
             var ch = Codigo.substring(i, i + 1);
             if (ch < "0" || "9" < ch)
                {
                  erro = 1;  
                }
            }
        if (Codigo.length != num)
	   {
           erro = 2; 	   
	   }   	

       }

    if (erro == 0)
       {  	
       return true;
       }
    else
       {	
	if (erro==1)
 	   alert("Este campo só aceita Numeros");	
        else
	   alert("O Código informado deve conter "+num+" números!");		

	obj.select();
       	obj.focus();
        return false;
       }
}