////////////////////////////////////////////////////////////////////////////////////
///                               Funções JavaScript 	                         ///
///                           Validações de Formulários 	                 ///
///                        Sistemas de Controle de Chamados                      ///
////////////////////////////////////////////////////////////////////////////////////
// -------------------------------------------------------------------------
// Nome da Função      : f_cgc(StrCGC)
// Analista            : Alessandro Precioso
// Data                : 27-07-2004
// Utilidade           : Função que mascara a digitação de dia e mês nos formulários
// Sintaxe             : f_cgc(form1.fcnpj)
// Exemplo             : f_cgc(form1.fcnpj)
// Data Ult. Alteração :
// Alterações          :
// -------------------------------------------------------------------------

function f_cgc(StrCGC){
	var varFirstChr = StrCGC.charAt(0);
	var vlMult,vlControle,s1, s2 = "";
	var i,j,vlDgito,vlSoma = 0;
	for ( var i=0; i<=13; i++ ){
		var c = StrCGC.charAt(i);
		if( ! (c>="0")&&(c<="9") ){
			//alert("Número do CGC Inválido !");
			document.form1.fcnpj.focus();
			return false; 
		}
		if( c!=varFirstChr ){
			vaCharCGC = true;
		}
	}
	if( ! vaCharCGC ) {
		//alert("Número do CGC Inválido !");
		document.form1.fcnpj.focus();
		return false ;
	}
	s1 = StrCGC.substring(0,12);
	s2 = StrCGC.substring(12,15);
	vlMult = "543298765432";
	vlControle = "";
	for ( j=1; j<3; j++ ){
		vlSoma = 0;
		for ( i=0; i<12; i++ ){ 
			vlSoma += eval( s1.charAt(i) )* eval( vlMult.charAt(i) );
		}
		if( j == 2 ){ 
			vlSoma += (2 * vlDgito);
		}
		vlDgito = ((vlSoma*10) % 11);
		if( vlDgito == 10 ){ 
			vlDgito = 0;
		}
		vlControle = vlControle + vlDgito;
		vlMult = "654329876543";
	}
	if( vlControle != s2 ) {
		//alert("Número do CGC Inválido !");
		document.form1.fcnpj.focus();
		return false;
		return false;
	}else{
		// alert("Número do CGC Válido !");
		return true;
	}
}

// -------------------------------------------------------------------------
// Nome da Função      : f_cpf(pcpf)
// Analista            : Alessandro Precioso
// Data                : 27-07-2004
// Utilidade           : Função que mascara a digitação de dia e mês nos formulários
// Sintaxe             : f_cpf(form1.fcpf)
// Exemplo             : f_cpf(form1.cpf)
// Data Ult. Alteração :
// Alterações          :
// -------------------------------------------------------------------------

function f_cpf(pcpf){
	if (pcpf.length != 11){
		sim=false
	}else{
		sim=true
	}
	//verifica se os numeros digitados são iguais
	if (sim){
		i = 1;
		while(pcpf.charAt(i) == pcpf.charAt(i -1) && i < 10){
			i++;
		}
	if(i == 10) sim=false
	else sim=true
	}
	if (sim){
		for (i=0; i<=(pcpf.length-1) && sim; i++){
			val = pcpf.charAt(i)
			if((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4")&&(val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) {sim=false}
		}
		if (sim){
			soma = 0
			for (i=0;i<=8;i++){
				val = eval(pcpf.charAt(i))
				soma = soma + (val*(i+1))
			}
			resto = soma % 11
			if (resto>9) dig = resto -10
			else dig = resto
			if (dig != eval(pcpf.charAt(9))) { sim=false }
			else{
				soma = 0
				for (i=0;i<=7;i++){
					val = eval(pcpf.charAt(i+1))
					soma = soma + (val*(i+1))
				}
				soma = soma + (dig * 9)
				resto = soma % 11
				if (resto>9) dig = resto -10
				else dig = resto
				if (dig != eval(pcpf.charAt(10))) { sim = false }
				else sim = true
			}
		}
	}
	if (sim) {
		//alert("CPF Ok");
		return true;
	}
	else {
		return false;
		alert("CPF inválido");
	}
}
// -------------------------------------------------------------------------
// Nome da Função      : f_MascaraDiaMes
// Analista            : Guilherme Muller Coletti
// Analista            : Ricardo Campos Silva
// Data                : 27-07-2004
// Utilidade           : Função que mascara a digitação de dia e mês nos formulários
// Sintaxe             : f_MascaraDiaMes(form1.fdata)
// Exemplo             : f_MascaraDiaMes(form1.fdata) // se for digitado 0104 irá
// retornar 01/04 no campo do formulário
// Data Ult. Alteração :
// Alterações          :
// -------------------------------------------------------------------------

   function f_MascaraDiaMes(cValor){
       var mydata = '';
       mydata = mydata + cValor.value;
       if (mydata.length == 2){
   	   mydata = mydata + '/';
   	   cValor.value = mydata;
       }
   }


// -------------------------------------------------------------------------
// Nome da Função      : f_MascaraData
// Analista            : Alessandro Precioso
// Data                : 14-03-2004
// Utilidade           : Função que mascara a digitação de datas nos formulários
// Sintaxe             : f_MascaraData(form1.fdata)
// Exemplo        : f_MascaraData(form1.fdata) // se for digitado 01042004 irá
// retornar 01/04/2004 no campo do formulário
// Data Ult. Alteração :
// Alterações          :
// -------------------------------------------------------------------------

   function f_MascaraData(cValor){
       var mydata = '';
       mydata = mydata + cValor.value;
       if (mydata.length == 2){
   mydata = mydata + '/';
   cValor.value = mydata;
       }
       if (mydata.length == 5){
   mydata = mydata + '/';
   cValor.value = mydata;
       }
   }

// -------------------------------------------------------------------------
// Nome da Função      : f_MascaraHora
// Analista            : Guilherme Muller Coletti
// Data                : 04-01-2005
// Utilidade           : Função que mascara a digitação de horas nos formulários
// Sintaxe             : f_MascaraHora(form1.fhora)
// Exemplo        : f_MascaraData(form1.fdata) // se for digitado 01042004 irá
// retornar 01/04/2004 no campo do formulário
// Data Ult. Alteração :
// Alterações          :
// -------------------------------------------------------------------------

   function f_MascaraHora(cValor){
       var mydata = '';
       mydata = mydata + cValor.value;
       if (mydata.length == 2){
   mydata = mydata + ':';
   cValor.value = mydata;
       }
   }


// ---------------------------------------------------------------------------------
// Nome da Função      : Calendário
// Analista            : Guilherme Muller Coletti
// Data                : 27-06-2002
// Utilidade           : Função para calendário
// Sintaxe             : f_popdate(Nome do Form,Nome da janela, tamanho,Nome do Form);
// Exemplo 	       : ('document.form1.fdtinicard','pop1','150',document.form1.fdtinicard.value)
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 
function f_popdate(obj,div,tam,ddd)
		{
		   if (ddd)
		   {
		       day = ""
		       mmonth = ""
		       ano = ""
		       c = 1
		       char = ""
		       for (s=0;s<parseInt(ddd.length);s++)
		       {
		           char = ddd.substr(s,1)
		           if (char == "/")
		           {
		               c++;
		               s++;
		               char = ddd.substr(s,1);
		           }
		           if (c==1) day    += char
		           if (c==2) mmonth += char
		           if (c==3) ano    += char
		       }
		       ddd = mmonth + "/" + day + "/" + ano
		   }

		   if(!ddd) {today = new Date()} else {today = new Date(ddd)}
		   date_Form = eval (obj)
		   if (date_Form.value == "") { date_Form = new Date()} else {date_Form = new Date(date_Form.value)}

		   ano = today.getFullYear();
		   mmonth = today.getMonth ();
		   day = today.toString ().substr (8,2)

		   umonth = new Array ("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro")
		   days_Feb = (!(ano % 4) ? 29 : 28)
		   days = new Array (31, days_Feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)

		   if ((mmonth < 0) || (mmonth > 11))  alert(mmonth)
		   if ((mmonth - 1) == -1) {month_prior = 11; year_prior = ano - 1} else {month_prior = mmonth - 1; year_prior = ano}
		   if ((mmonth + 1) == 12) {month_next  = 0;  year_next  = ano + 1} else {month_next  = mmonth + 1; year_next  = ano}
		   txt  = "<table bgcolor='#efefff' style='border:solid #0289B9; border-width:2' cellspacing='0' cellpadding='3' border='0' width='"+tam+"' height='"+tam*1.1 +"'>"
		   txt += "<tr bgcolor='#FFFFFF'><td colspan='7' align='center'><table border='0' cellpadding='0' width='100%' bgcolor='#FFFFFF'><tr>"
		   txt += "<td width=20% align=center><a href=javascript:f_popdate('"+obj+"','"+div+"','"+tam+"','"+((mmonth+1).toString() +"/01/"+(ano-1).toString())+"') class='Cabecalho_Calendario' title='Ano Anterior'><<</a></td>"
		   txt += "<td width=20% align=center><a href=javascript:f_popdate('"+obj+"','"+div+"','"+tam+"','"+( "01/" + (month_prior+1).toString() + "/" + year_prior.toString())+"') class='Cabecalho_Calendario' title='Mês Anterior'><</a></td>"
		   txt += "<td width=20% align=center><a href=javascript:f_popdate('"+obj+"','"+div+"','"+tam+"','"+( "01/" + (month_next+1).toString()  + "/" + year_next.toString())+"') class='Cabecalho_Calendario' title='Próximo Mês'>></a></td>"
		   txt += "<td width=20% align=center><a href=javascript:f_popdate('"+obj+"','"+div+"','"+tam+"','"+((mmonth+1).toString() +"/01/"+(ano+1).toString())+"') class='Cabecalho_Calendario' title='Próximo Ano'>>></a></td>"
		   txt += "<td width=20% align=right><a href=javascript:force_close('"+div+"') class='Cabecalho_Calendario' title='Fechar Calendário'><b>X</b></a></td></tr></table></td></tr>"
		   txt += "<tr><td colspan='7' align='right' bgcolor='#AEDBF0' class='mes'><a href=javascript:pop_year('"+obj+"','"+div+"','"+tam+"','" + (mmonth+1) + "') class='mes'>" + ano.toString() + "</a>"
		   txt += " <a href=javascript:pop_month('"+obj+"','"+div+"','"+tam+"','" + ano + "') class='mes'>" + umonth[mmonth] + "</a> <div id='popd' style='position:absolute'></div></td></tr>"
		   txt += "<tr bgcolor='#0289B9'><td width='14%' class='dia' align=center><b>Dom</b></td><td width='14%' class='dia' align=center><b>Seg</b></td><td width='14%' class='dia' align=center><b>Ter</b></td><td width='14%' class='dia' align=center><b>Qua</b></td><td width='14%' class='dia' align=center><b>Qui</b></td><td width='14%' class='dia' align=center><b>Sex<b></td><td width='14%' class='dia' align=center><b>Sab</b></td></tr>"
		   today1 = new Date((mmonth+1).toString() +"/01/"+ano.toString());
		   diainicio = today1.getDay () + 1;
		   week = d = 1
		   start = false;

		   for (n=1;n<= 42;n++)
		   {
		       if (week == 1)  txt += "<tr bgcolor='#f0f0f0' align=center>"
		       if (week==diainicio) {start = true}
		       if (d > days[mmonth]) {start=false}
		       if (start)
		       {
		           dat = new Date((mmonth+1).toString() + "/" + d + "/" + ano.toString())
		           day_dat   = dat.toString().substr(0,10)
		           day_today  = date_Form.toString().substr(0,10)
		           year_dat  = dat.getFullYear ()
		           year_today = date_Form.getFullYear ()
		           colorcell = ((day_dat == day_today) && (year_dat == year_today) ? " bgcolor='#AEDBF0' " : "" )
		           if((d>9)&&(mmonth>9)){
				   txt += "<td"+colorcell+" align=center><a href=javascript:block('"+  d + "/" + (mmonth+1).toString() + "/" + ano.toString() +"','"+ obj +"','" + div +"') class='data'>"+ d.toString() + "</a></td>"
				   }
				   if((d<10)&&(mmonth>9)){
				   txt += "<td"+colorcell+" align=center><a href=javascript:block('"+0+  d + "/" + (mmonth+1).toString() + "/" + ano.toString() +"','"+ obj +"','" + div +"') class='data'>"+ d.toString() + "</a></td>"
   				   }
				   if((d<30)&&(mmonth==9))
				   {
				    if(d<10)
				      { txt += "<td"+colorcell+" align=center><a href=javascript:block('"+0+  d + "/" + (mmonth+1).toString() + "/" + ano.toString() +"','"+ obj +"','" + div +"') class='data'>"+ d.toString() + "</a></td>"
   				      }
   				     else
   				      {
   				      txt += "<td"+colorcell+" align=center><a href=javascript:block('"+  d + "/" + (mmonth+1).toString() + "/" + ano.toString() +"','"+ obj +"','" + div +"') class='data'>"+ d.toString() + "</a></td>"
   				      }
   				    }
				   if((d>9)&&(mmonth<9)){
				   txt += "<td"+colorcell+" align=center><a href=javascript:block('"+  d + "/0" + (mmonth+1).toString() + "/" + ano.toString() +"','"+ obj +"','" + div +"') class='data'>"+ d.toString() + "</a></td>"
   				   }
				   if((d<10)&&(mmonth<9)){
				   txt += "<td"+colorcell+" align=center><a href=javascript:block('"+0+  d + "/0" + (mmonth+1).toString() + "/" + ano.toString() +"','"+ obj +"','" + div +"') class='data'>"+ d.toString() + "</a></td>"
   				   }
		           d ++
		       }
		       else
		       {
		           txt += "<td class='data' align=center> </td>"
		       }
		       week ++
		       if (week == 8)
		       {
		           week = 1; txt += "</tr>"}
		       }
		       txt += "</table>"
		       div2 = eval (div)
		       div2.innerHTML = txt
		}

		// função para exibir a janela com os meses
		function pop_month(obj, div, tam, ano)
		{
		 txt  = "<table bgcolor='#CCCCFF' border='0' width=80>"
		 for (n = 0; n < 12; n++) { txt += "<tr><td align=center><a href=javascript:f_popdate('"+obj+"','"+div+"','"+tam+"','"+("01/" + (n+1).toString() + "/" + ano.toString())+"')>" + umonth[n] +"</a></td></tr>" }
		 txt += "</table>"
		 popd.innerHTML = txt
		}

		// função para exibir a janela com os anos
		function pop_year(obj, div, tam, umonth)
		{
		 txt  = "<table bgcolor='#CCCCFF' border='0' width=160>"
		 l = 1
		 for (n=1991; n<2012; n++)
		 {  if (l == 1) txt += "<tr>"
		    txt += "<td align=center><a href=javascript:f_popdate('"+obj+"','"+div+"','"+tam+"','"+(umonth.toString () +"/01/" + n) +"')>" + n + "</a></td>"
		    l++
		    if (l == 4)
		       {txt += "</tr>"; l = 1 }
		 }
		 txt += "</tr></table>"
		 popd.innerHTML = txt
		}

		// função para fechar o calendário
		function force_close(div)
		   { div2 = eval (div); div2.innerHTML = ''}

		// função para fechar o calendário e setar a data no campo de data associado
		function block(data, obj, div)
		{
		   force_close (div)
		   obj2 = eval(obj)
		   obj2.value = data
		   obj2.focus();
		}
		function Dia(Data_DDMMYYYY)
		{
			string_data = Data_DDMMYYYY.toString();
			posicao_barra = string_data.indexOf("/");
			if (posicao_barra!= -1)
			{
			dia = string_data.substring(0,posicao_barra);
			return dia;
			}
			else
			{
			return false;
			}
		}

		function Mes(Data_DDMMYYYY)
		{
			string_data = Data_DDMMYYYY.toString();
			posicao_barra = string_data.indexOf("/");
			if (posicao_barra!= -1)
			{
			dia = string_data.substring(0,posicao_barra);
			string_mes = string_data.substring(posicao_barra+1,string_data.length);
			posicao_barra = string_mes.indexOf("/");
				if (posicao_barra!= -1)
				{
				mes = string_mes.substring(0,posicao_barra);
				mes = Math.floor(mes);
				return mes;
				}
				else
				{
				return false;
				}

			}
			else
			{
			return false;
			}
		}

		function Ano(Data_DDMMYYYY)
		{
			string_data = Data_DDMMYYYY.toString();
			posicao_barra = string_data.indexOf("/");
			if (posicao_barra!= -1)
			{
			dia = string_data.substring(0,posicao_barra);
			string_mes = string_data.substring(posicao_barra+1,string_data.length);
			posicao_barra = string_mes.indexOf("/");
				if (posicao_barra!= -1)
				{
				mes = string_mes.substring(0,posicao_barra);
				mes = Math.floor(mes);
				ano = string_mes.substring(posicao_barra+1,string_mes.length);
				return ano;
				}
				else
				{
				return false;
				}

			}
			else
			{
			return false;
			}
		}

		function Calcula_Data(data_DDMMYYYY,dias,adicao){

			Var_Dia=Dia(data_DDMMYYYY);
			Var_Mes=Mes(data_DDMMYYYY);
			Var_Mes=Math.floor(Var_Mes)-1;
			Var_Ano=Ano(data_DDMMYYYY);

			var data = new Date(Var_Ano,Var_Mes,Var_Dia);


			operacao = '+'
			var diferenca = data.getTime() + (7 * 1000 * 60 * 60 * 24);

			var diferenca = new Date(diferenca);

			if(((diferenca.getDate())>9) && ((diferenca.getMonth()+1)>9))
			    { //form1.fdtfimcard.disabled=true;
			      form1.fdtfimcard.value=diferenca.getDate()+'/'+(parseFloat(diferenca.getMonth())+1)+'/'+diferenca.getYear();
			     // form1.fdtfimcardaux.value=diferenca.getDate()+'/'+(parseFloat(diferenca.getMonth())+1)+'/'+diferenca.getYear();
			    }
			if(((diferenca.getDate())<10) && ((diferenca.getMonth()+1)>9))
				{ //form1.fdtfimcard.disabled=true;
				  form1.fdtfimcard.value='0'+diferenca.getDate()+'/'+(parseFloat(diferenca.getMonth())+1)+'/'+diferenca.getYear();
				  //form1.fdtfimcardaux.value='0'+diferenca.getDate()+'/'+(parseFloat(diferenca.getMonth())+1)+'/'+diferenca.getYear();
				}
			if(((diferenca.getDate())<10) && ((diferenca.getMonth()+1)<10))
				{ //form1.fdtfimcard.disabled=true;
				  form1.fdtfimcard.value='0'+diferenca.getDate()+'/0'+(parseFloat(diferenca.getMonth())+1)+'/'+diferenca.getYear();
				  //form1.fdtfimcardaux.value='0'+diferenca.getDate()+'/0'+(parseFloat(diferenca.getMonth())+1)+'/'+diferenca.getYear();
				 }
			if(((diferenca.getDate())>9) && ((diferenca.getMonth()+1)<10))
				{ //form1.fdtfimcard.disabled=true;
				  form1.fdtfimcard.value=diferenca.getDate()+'/0'+(parseFloat(diferenca.getMonth())+1)+'/'+diferenca.getYear();
				  //form1.fdtfimcardaux.value=diferenca.getDate()+'/0'+(parseFloat(diferenca.getMonth())+1)+'/'+diferenca.getYear();
				}

		}

// ---------------------------------------------------------------------------------- 


// ---------------------------------------------------------------------------------
// Nome da Função      : Validação CheckBox
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função para validar checkboxs nulos
// Sintaxe             : f_ValidarCheckBox(Nome do Form,Nome do Campo,Qtd Indexação);
// Exemplo 	       : Esta função deverá ser usada no final do formulário, 
//                       no momento da validação do formulário
//                       return f_ValidarCheckBox(form1,"fOpcao",3);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarCheckBox(cForm,cValor,nQtd)
{
	var cEnc = false;
	for (var x=1;x<nQtd;x++)
	{
		cOpcao = cValor+x;
		if (cForm.elements[cOpcao].checked)
		{
			cEnc = true;
		}
	}
	if (cEnc == false)
	{
		alert("Por favor, preencha o campo obrigatório");
		return false;
	}
	else
	{
		return true;
	}
}


// ---------------------------------------------------------------------------------
// Nome da Função      : Validação Radio Button
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função para validar radio buttons nulos
// Sintaxe             : f_ValidarRadio(Nome do Form.Nome do Campo);
// Exemplo 	       : Esta função deverá ser usada no final do formulário, 
//                       no momento da validação do formulário
//                       return f_ValidarRadio(form1.fRadio);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarRadio(cValor)
{
    cOk  = false;
    nQtd = cValor.length;
    for (i=0;i<nQtd;i++)
    {
    	if (cValor[i].checked)
    	{
        	cOk = true;
        	break;
        }
    }
    if (cOk)
    {
    	return true;
    }
    else
    {
	alert("Por favor, preencha o campo obrigatório");

    }
}


// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de Hora
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica sea hora digitada é válida
// Sintaxe             : f_ValidarHora(Nome do Form, Hora);
// Exemplo 	       : Esta função deverá ser usada no final do formulário, 
//                       no momento da validação do formulário
//                       return f_ValidarHora(form1,form1.fHora);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarHora( cCampo )
{
    var cHr, cMin;
    cCampo.style.background='#FFFFFF';
    cHr  = cCampo.value.substr( 0,2 );
    cMin = cCampo.value.substr( 3,2 );
    
    // Verifica se a hora foi digitada corretamente
    if ( ( cCampo.value.substr(2,1) == ':' ) &&
         ( ( parseInt( cHr  ) >= 0 ) && ( parseInt( cHr  ) <= 23 ) ) &&
         ( ( parseInt( cMin ) >= 0 ) && ( parseInt( cMin ) <= 59 ) ) )
    {
      return ( true );
    }
    else
    {
      alert( 'Favor fornecer a hora em um formato válido (HH:MM).' );
      cCampo.focus();
      cCampo.style.background='#F67070';
      return false;
    }
}


// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de Período
// Analista            : Alessandro Precioso
// Data                : 28-06-2002
// Utilidade           : Função que verifica a validade de um período
// Sintaxe             : f_ValidarPeriodo(Nome do Form, Data inicial, Data Final);
// Exemplo 	       : Esta função deverá ser usada no final do formulário, 
//                       no momento da validação do formulário
//                       return f_ValidarPeriodo(form1,form1.DtIni, form1.DtFim);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarPeriodo( cForm, cDtIni,cDtFim )
{
    var cDtIniAux, cDtFimAux;
    
    cDtIniAux = cDtIni.value.substr( 6,4 ) + cDtIni.value.substr( 3,2 ) + cDtIni.value.substr( 0,2 );
    cDtFimAux = cDtFim.value.substr( 6,4 ) + cDtFim.value.substr( 3,2 ) + cDtFim.value.substr( 0,2 );
    
    if ( cDtIniAux > cDtFimAux )
    {
      alert( 'A data inicial não pode ser posterior à data final do período' );	    
      return false;
    }
    else
    { 
      // Verifica se a quantidade de dias do período é maior que o limite
      // Em implantação
      
    
      return true;
    }
}


// ---------------------------------------------------------------------------------
// Nome da Função      : Edição do Campo
// Analista            : Alessandro Precioso
// Data                : 28-06-2002
// Utilidade           : Função que verifica se o campo em que a função está sendo chamada
//   	 	         poderá ser editado.
// Sintaxe             : f_EditaCampo(Nome do Form, Nome do Campo);
// Exemplo 	       : <input type=hidden name=feditadata>
//                       <input type=text name=fdata onFocus="return f_EditaCampo(form1,this);">
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_EditaCampo( cForm,cCampo )
{
    nValor = cCampo.name.substr(0,1) + 'edita' + cCampo.name.substr(1)
    if ( cForm.elements[nValor].value == 'N' )
    {
    	cCampo.blur();
    }
    return true;
}

// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de Tamanho Mínimo
// Analista            : Alessandro Precioso
// Data                : 24-07-2003
// Utilidade           : Função que verifica a quantidade mínima de caracteres digitados em um
//			 determinando objeto do form.
// Sintaxe             : f_ValidarTamanhoMin(Nome do Campo, Maximo de Caracteres)
// Exemplo 	       : f_ValidarTamanhoMin(form1.fcObs,120);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarTamanhoMin(cCampo,nTamanho)
{
	cCampo.style.background='#FFFFFF';
	if ((cCampo.value.length < nTamanho) && (cCampo.value.replace(' ','') != ""))
	{
		alert('O campo deve ter no mínimo ' + nTamanho + ' caracteres!');
		cCampo.focus();
		cCampo.style.background='#F67070';
		return false;
	}
	else
	{
		return true;
	}
}

// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de Tamanho
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica a quantidade de caracteres digitados em um
//			 determinando objeto do form.
// Sintaxe             : f_ValidarTamanho(Nome do Campo, Maximo de Caracteres)
// Exemplo 	       : f_ValidarTamanho(form1.fcObs,120);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarTamanho(cCampo,nTamanho)
{
	cCampo.style.background='#FFFFFF';
	if ((cCampo.value.length > nTamanho) && (cCampo.value.replace(' ','') != ""))
	{
		alert('O campo deve ter apenas ' + nTamanho + ' caracteres!');
		cCampo.focus();
		cCampo.style.background='#F67070';
		return false;
	}
	else
	{
		return true;
	}
}

// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de Data
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : 1 - Função que verifica se a data é valida.
//			 2 - Verifica se a data mais hoje é maior que a data informada
//			 3 - Verifica se a data atual é maior que a data informada
//			 4 - Verifica se a data mais hoje é menor que a data informada
//			 5 - Verifica se a data atual é menor que a data informada
// Sintaxe             : f_ValidarData(Campo do Form);
// Exemplo 	       : f_ValidarData(fcData); --> 1
//			 f_ValidarData(fcData,'HF'); --> 2 não permite data < q atual
//			 f_ValidarData(fcData,'F'); --> 3
//			 f_ValidarData(fcData,'AH'); --> 4 não permite data > q atual
//			 f_ValidarData(fcData,'A'); --> 5
// Data Ult. Alteração : 
// ---------------------------------------------------------------------------------- 

function f_ValidarData( cCampo, cTipo )
{
	cCampo.style.background='#FFFFFF';
	var Data = new Date();
	var dHoje = new Date(Data.getYear(),Data.getMonth(),Data.getDate(),0,0,0)
	var nMes, cMes;
	var dDataFornecida;
	var str = cCampo.value;
	var cErro = 'Por favor, digite a data corretamente ( Ex. 14/05/2001 )';

	if (str.replace(' ','') != "")
	{
		// Verifica se foram digitados 10 caracteres.
		if (str.length != 10)
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}
		// Verifica se os caracteres são números e barra.
		for (var i = 0; i < str.length; i++)
		{
			var ch = str.substring(i, i + 1);
			if ((ch < "0" || "9" < ch) && ch != "/")
			{
				alert(cErro)
				cCampo.focus();
				cCampo.value = "";
				cCampo.style.background='#F67070';
				return false;
			}
		}

		// Verifica o valor do dia.
		if ( (str.substring(0, 2) < 1) || (str.substring(0, 2) > 31) )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}

		// Verifica o valor do dia no valor do mês.
		// Fevereiro
		if ( (str.substring(3, 5) == 2 ) && (str.substring(0, 2) > 29) )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}
		if ( (str.substring(3, 5) == 2 ) && (str.substring(0, 2) == 29) )
		{
			if (!confirm('\nVocê entrou com 29 de Fevereiro...\n\nVocê tem certeza de que é ano bissexto?'))
			{
				cCampo.focus();
			        cCampo.style.background='#F67070';
				return false;
			}
		}

		// Abril
		if ( (str.substring(3, 5) == 4 ) && (str.substring(0, 2) > 30) )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}

		// Junho
		if ( (str.substring(3, 5) == 6 ) && (str.substring(0, 2) > 30) )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}

		// Setembro
		if ( (str.substring(3, 5) == 9 ) && (str.substring(0, 2) > 30) )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';

			return false;
		}

		// Novembro
		if ( (str.substring(3, 5) == 11 ) && (str.substring(0, 2) > 30) )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}

		// Verifica o valor do mês.
		if ( (str.substring(3, 5) < 1) || (str.substring(3, 5) > 12) )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}


		// Verifica posicionamento da barra.
		if ( str.substring(3, 4) == "/" || str.substring(4, 5) == "/" )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}

		if ( str.substring(0, 1) == "/" || str.substring(1, 2) == "/" )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}

		if ( str.substring(6, 9) == "/" || str.substring(7, 10) == "/" )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}

		if ( str.substring(2, 3) != "/" || str.substring(5, 6) != "/" )
		{
			alert(cErro)
			cCampo.focus();
			cCampo.value = "";
			cCampo.style.background='#F67070';
			return false;
		}


		// Verifica se a data é anterior a hoje
		nMes = str.substring(3,5) - 1;
		
		dDataFornecida = new Date( str.substring(6,10), nMes, str.substring(0,2) );
		
		if ( toString( dDataFornecida.getMonth() ).lenght  < 2 )
		{
			cMes = "0" + toString( dDataFornecida.getMonth() );
		}
		else
		{
			cMes = toString( dDataFornecida.getMonth() );
		}

		if (cTipo == "F")
		{
			if ( dDataFornecida <=  dHoje )
			{
				alert("\nA Data não pode ser menor que a Data de Hoje!");
				cCampo.focus();
				cCampo.style.background='#F67070';
				return false;
			}
		}
		else if (cTipo == "A")
		{
			if ( dDataFornecida >=  dHoje )
			{
				alert("\nA Data não pode ser maior que a Data de Hoje!");
				cCampo.focus();
				cCampo.style.background='#F67070';
				return false;
			}
		}
		else if (cTipo == "HF")
		{
			if ( dDataFornecida <  dHoje )
			{
				alert("\nA Data não pode ser menor que a Data de Hoje!");
				cCampo.focus();
				cCampo.style.background='#F67070';
				return false;
			}
		}
		else if (cTipo == "AH")
		{
			if ( dDataFornecida >  dHoje )
			{
				alert("\nA Data não pode ser maior que a Data de Hoje!");
				cCampo.focus();
				cCampo.style.background='#F67070';
				return false;
			}
		}
	return true;
	}
	else
	{
	 return true;
	}

}


// ---------------------------------------------------------------------------------
// Nome da Função      : Validar apenas caracteres
// Analista            : Alessandro Precioso
// Data                : 28-06-2002
// Utilidade           : Função que verifica se foi informado apenas letras no campo
// Sintaxe             : f_ValidarString(Nome do Campo);
// Exemplo 	       : f_ValidarString(form1,this);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarString(cCampo)
{
	cCampo.style.background='#FFFFFF';
	var valid = "aàáãâbcdeéêfghiíìjklmnoôõpqrstuvwxyz' AÀÁÃÂBCÇDEÉÊFGHÌÍIJKLMNOÔÕPQRSTUVWXYZ"
	var ok = "yes";
	var temp;
	for (var i=0; i<cCampo.value.length; i++)
	{
		temp = "" + cCampo.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no")
	{
		alert("Por favor, digite apenas letras!");
		cCampo.focus();
		cCampo.style.background='#F67070';
		return false;
	}
	else
	{
		return true;
	}
}

// ---------------------------------------------------------------------------------
// Nome da Função      : Validar apenas caracteres e numeros
// Analista            : Guilherme Muller Coletti
// Data                : 23-09-2004
// Utilidade           : Função que verifica se foi informado apenas letras e numero no campo
// Sintaxe             : f_ValidarAlfanumerico(Nome do Campo);
// Exemplo 	       : f_ValidarAlfanumerico(form1,this);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarAlfanumerico(cCampo)
{
	cCampo.style.background='#FFFFFF';
	var valid = "aàáãâbcdeéêfghiíìjklmnoôõpqrstuvwxyz AÀÁÃÂBCÇDEÉÊFGHÌÍIJKLMNOÔÕPQRSTUVWXYZ 1234567890 () -"
	var ok = "yes";
	var temp;
	for (var i=0; i<cCampo.value.length; i++)
	{
		temp = "" + cCampo.value.substring(i, i+1);
		if (valid.indexOf(temp) == "-1"){ ok = "no"; varerro=temp;}
	}
	if (ok == "no")
	{
		alert("Por favor, digite apenas letras ou numeros, não digitar "+varerro);
		cCampo.focus();
		cCampo.style.background='#F67070';
		return false;
	}
	else
	{
		return true;
	}
}

// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de Número Reais
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica se o valor do campo informado é um numero real
//			 Ex: 1.25  1,25
// Sintaxe             : f_ValidarNumeroReal(Nome do Campo, cSep);
// Exemplo 	       : f_ValidarNumeroReal(form1,this);
// Data Ult. Alteração : 
// Alterações          : Inclusão do parâmetro cSep, que indica qual separador
//                       deverá ser considerado (vírgula ou ponto ).
// ---------------------------------------------------------------------------------- 


function f_ValidarNumeroReal(nNumero, cSep)
{
	nNumero.style.background='#FFFFFF';
	var x=nNumero.value
	var cFiltroVirgula=/(^\d+$)|(^\d+\,\d+$)/
	var cFiltroPonto=/(^\d+$)|(^\d+\.\d+$)/
	var cFiltro
	
	if ( cSep == "," )
	{
	  cFiltro = cFiltroVirgula;
	}
	else
	{
	  cFiltro = cFiltroPonto;
	}
	
	if ((!cFiltro.test(x)) && (nNumero.value.replace(' ','') != ""))
	{
	  if ( cSep == "," )
	  {
	    alert("Por favor, preencha um número válido! ( Somente Algarismos e Vírgula )");
	  }
	  else
	  {
	    alert("Por favor, preencha um número válido! ( Somente Algarismos e Ponto )");
	  }
	  	
	  nNumero.focus();
	  nNumero.style.background='#F67070';
	  return false;
	}
	else
	{
	  return true;
	}
}

// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de Número Inteiro
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica se o valor do campo é um Numero Inteiro
//   	 	         Ex. 20
// Sintaxe             : f_ValidarNumeroInteiro(Nome do Campo);
// Exemplo 	       : f_ValidarNumeroInteiro(form1,this);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarNumeroInteiro(nNumero)
{
	nNumero.style.background='#FFFFFF';
	var x=nNumero.value
	var cFiltro=/(^\d+$)|(^\d+\\d+$)/
	if ((!cFiltro.test(x)) && (nNumero.value.replace(' ','') != ""))
	{
		alert("Por favor, use somente números!");
		nNumero.focus();
	  	nNumero.style.background='#F67070';
		return false;
	}
	else
	{
		return true;
	}
}

function Trim(s)
{
  if(typeof(s)!="string"){return s;}
  s=s.replace(/^\s+/g,""); 
  return s.replace(/\s+$/g,""); 
}

function TrimInputSpaces(oF)
{
    try {
       oF.value = Trim(oF.value);
       return oF.value;
    } catch(e) {}
}

// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de Campo Nulos
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica se o valor do campo é nulo
// Sintaxe             : f_ValidarCamposNulos(Nome do Campo);
// Exemplo 	       : f_ValidarCamposNulos(form.nome do campo);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarCamposNulos(cCampo)
{
	cCampo.style.background='#FFFFFF';
	var c = TrimInputSpaces(cCampo);
	if (c == "")
	{
		cCampo.style.background='#F67070';
		alert("Por favor, preencha o campo obrigatório");

		cCampo.focus();

		return false;
	}
	else
	{
		return true;
	}
}


// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de E-mail
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica se o e-mail informada é válido
// Sintaxe             : f_ValidarEmail(Nome do Campo);
// Exemplo 	       : f_ValidarEmail(form1,this);
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarEmail(cEmail)
{
	cEmail.style.background='#FFFFFF';
	var str=cEmail.value
	var cFiltro=/^.+@.+\..{1,3}$/
	if ((!cFiltro.test(str)) && (cEmail.value.replace(' ','') != ""))
	{
		alert("Por favor, insira um e-mail válido!")
		cEmail.focus();
		cEmail.style.background='#F67070';
		return false;
	}
	else
	{
		return true;
	}
}

// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de N Campos Obrigatórios
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica se o usuário preencheu pelo menos N campos
//			 em um formulário.
// Sintaxe             : f_ValidarUmCampo(Nome do Form,Qtd de Campo Necessários,Nome dos Campos);
// Exemplo 	       : f_ValidarUmCampo("form1",2,new Array ("campo1","campo2","campo3"));
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarUmCampo(cForm,nQtd,cCampo)
{ 
	var cErro = 0;
	for (x=0;x<cCampo.length;x++)
	{
		campo = cCampo[x];
		if (top.document.forms[cForm].elements[campo].value.replace(' ','') != "")
		{
			cErro++;
		}
	}
	if (cErro < nQtd)
	{
		alert('Por favor, você precisa preencher pelo menos ' + nQtd + ' dos campos descritos!');
	}
	else
	{
		return true;
	}
}


// ---------------------------------------------------------------------------------
// Nome da Função      : Validação de N Campos Obrigatórios para telefone
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica se o usuário preencheu pelo menos N campos
//			 em um formulário.
// Sintaxe             : f_ValidarUmCampo(Nome do Form,Qtd de Campo Necessários,Nome dos Campos);
// Exemplo 	       : f_ValidarUmCampo("form1",2,new Array ("campo1","campo2","campo3"));
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarUmCampoTel(cForm,nQtd,cCampo)
{ 
	var cErro = 0;
	for (x=0;x<cCampo.length;x++)
	{
		campo = cCampo[x];
		if (top.document.forms[cForm].elements[campo].value.replace(' ','') != "")
		{
			cErro++;
		}
	}
	if (cErro < nQtd)
	{
		alert('Por favor, você precisa preencher pelo menos um dos campos telefone!');
	}
	else
	{
		return true;
	}
}


// ---------------------------------------------------------------------------------
// Nome da Função      : f_ValidarPlaca
// Analista            : Alessandro Precioso
// Data                : 27-06-2002
// Utilidade           : Função que verifica se uma placa de automóvel foi digitada corretamente
// Sintaxe             : f_ValidarString(Nome do Campo, Máscara);
// Exemplo 	       : f_ValidarString(form1.fPlaca, '-');
//                       Observação : se o 2º parâmetro for omitido, significa que a
//                       máscara não faz parte da informação. e não deverá ser validada
// Data Ult. Alteração : 
// Alterações          :
// ---------------------------------------------------------------------------------- 

function f_ValidarPlaca(cCampo, cMascara)
{
	cCampo.style.background='#FFFFFF';
	var aLetras  = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
	var aNumeros = "0123456789"
	var ok = "yes";
	var temp;
	var cMsgAdic;
	var nPosIniNr;
	
	// Valida a máscara e define a mensagem adequada para ser mostrada em caso de erro
	if ( cMascara == "-" )
	{ cMsgAdic = ',\n separados por traço (-)';
	  if ( cCampo.value.substr(3,1) != '-' ) ok = "no";
	  nPosIniNr = 4;
	}
	else
	{ cMsgAdic = '';
	  nPosIniNr = 3;
	}
	  	
	// valida as letras
	for (var i=0; i<=2; i++)
	{
	  if (aLetras.indexOf(cCampo.value.substr(i,1)) == -1){ ok = "no"};
	}
	if (ok == "no")
	{
	  alert("A placa deve ser informada com 3 letras e 4 números" + cMsgAdic);
	  cCampo.focus();
	  cCampo.style.background='#F67070';
	  return false;
	}	
	
	// valida os números
	ok = "yes";
	for (var i=nPosIniNr; i<cCampo.length; i++)
	{
	  temp = "" + cCampo.value.substring(i, i+1);
	  if (aNumeros.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no")
	{
	  alert("A placa deve ser informada com 3 letras e 4 números" + cMsgAdic);
	  cCampo.focus();
	  cCampo.style.background='#F67070';
	  return false;
	}		
	else { return true; }
}


