
/*
 * DIREITOS AUTORAIS RESERVADOS (C) 2007 UFRJ
 * 
 * ESTE PROGRAMA É SOFTWARE LIVRE; VOCÊ PODE REDISTRIBUÍ-LO E/OU MODIFICÁ-LO SOB OS
 * TERMOS DA LICENÇA PÚBLICA GERAL GNU CONFORME PUBLICADA PELA FREE SOFTWARE FOUNDATION;
 * TANTO A VERSÃO 2 DA LICENÇA, COMO (A SEU CRITÉRIO) QUALQUER VERSÃO POSTERIOR.

 * ESTE PROGRAMA É DISTRIBUÍDO NA EXPECTATIVA DE QUE SEJA ÚTIL, PORÉM, SEM NENHUMA GARANTIA;
 * NEM MESMO A GARANTIA IMPLÍCITA DE COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
 * CONSULTE A LICENÇA PÚBLICA GERAL DO GNU PARA MAIS DETALHES.
 * 
 * VOCÊ DEVE TER RECEBIDO UMA CÓPIA DA LICENÇA PÚBLICA GERAL DO GNU JUNTO COM ESTE PROGRAMA; 
 * SE NÃO, ACESSE <<HTTP://WWW.GNU.ORG/LICENSES/LICENSES.PT-BR.HTML>>
 */

/*-------------------------------------------------------
'Fun��es relativas a� parte Comum dos Formul�rios (Pessoa de Refer�ncia, Documentos do Usu�rio e Endere�o do Usu�rio
'
' Pessoa de Refer�ncia:
'	
'  function TestaApenasNumeros(obj)
'  function ValidaSUS(cartaoSus)
'  function ValidaData( pData )
'
'	
' Documentos do Usu�rio
'  function ValidaCPF(parNumero) {
'  function ValidaTituloEleitor(codigo)
'  function ValidaPIS(codigo)
'  function ValidaHabilitacaoMotorista(codigo)
'  function valida_cnh(codigo)
'  function valida_pgu(codigo)
'
' Endere�o do Usu�rio
'   function ValidaEmail( pEmail )
'
' Outras
'	function cep(v)
'	function str_pad(palavra,casas,carac,dir)
'-------------------------------------------------------*/


function TestaApenasNumeros(obj)
{
   if (obj.value == '')
   {
      return;
   }

   padrao=/\D/gi;

   if (obj.value.search(padrao) == -1)
   {
     alert('Este campo n�o pode conter apenas n�meros');
     setTimeout("document.getElementById('" + obj.id + "').focus();",1);
   }
 
}

function proibeNumeros(evt)
{
	var e = evt;
	if(window.event)
	{ // IE
		var charCode = e.keyCode;
	} 
	else if (e.which) 
	{ // Safari 4, Firefox 3.0.4
		var charCode = e.which
	}
	if (charCode >= 48 && charCode <= 57)
		return false;
	return true;
}
function ValidaEmail( pEmail )
{
    var iPos;
    var sNome, sDominio;

    pEmail = Trim (pEmail);
    
    if (pEmail.length == 0) return false;

    if ((pEmail.indexOf("@") != pEmail.lastIndexOf("@")) || (pEmail.indexOf("@") <= 0))
    {
        return false;
    }

    iPos = pEmail.indexOf("@");
    sNome = pEmail.substring(0, iPos);
    sDominio = pEmail.substring(iPos+1, pEmail.length);

    if (sNome.length == 0) return(false);
    if (sDominio.length == 0) return(false);

    if ((sDominio.indexOf(".") == -1) || (sDominio.lastIndexOf(".") == sDominio.length-1))
    {
        return false;
    } 
    
    return true;
}

function ValidaData( pData )
{
    var dt;
    var i, j;
    var sChar;
    var fc_dia, fc_mes, fc_ano;
    
    
    pData = Trim(pData);
    
    if (pData.length == 0) return false;
    
    // Separa a string em dia, mês e ano
    i = pData.indexOf("/");
    if (i <= 0)  return false;
    j = pData.indexOf("/", i+1);
    if (j == -1) return false;
    fc_dia = pData.substring(0, i);
    fc_mes = pData.substring(i+1, j);
    fc_ano = pData.substring(j+1, pData.length);
    
    // Verifica número de dígitos
    if (fc_dia.length != 2)  return false;        
    if (fc_mes.length != 2)  return false;        
    if (fc_ano.length != 4)  return false;

    // Verifica se há apenas caracteres válidos (números)
    dt = fc_dia + fc_mes + fc_ano;
    for (i = 0; i < dt.length; i++) 
    {
        sChar = dt.charAt(i);
        if (sChar < "0" || sChar > "9") return false;
    }
    
    // Verifica se são números válidos
    if (fc_mes < 1 || fc_mes > 12)  return(false);
    if (fc_dia < 1 || fc_dia > 31)  return(false);
    if (fc_ano < 1)  return(false);
    if (fc_mes == 4 || fc_mes == 6 || fc_mes == 9 || fc_mes == 11)
    {
        if (fc_dia == 31)  return(false);
        if (fc_ano < 1753) return(false);
    }

    if (fc_mes == 2)
    {
        fc_a1 = parseInt(fc_ano/4);
        if (isNaN(fc_a1)) { return(false) };
        if (fc_dia > 29) return(false);
        if (fc_dia == 29 && ((fc_ano/4) != parseInt(fc_ano/4))) return(false);
    }
    
    return(true);
}


function ValidaTituloEleitor(codigo)
{
       if(codigo.length != 13)
               return false;

       cod_estado = codigo.substr( 9, 2);

       if((cod_estado < 1) || (cod_estado > 28))
               return false;

       soma = 0;

       for(i=0; i<9; ++i)
               soma += codigo[i]*(10-i);

       dv = soma % 11;

       if(dv <= 1)
       {
               if(cod_estado <= 2)
                       dv = 1 - dv;
               else
                       dv = 0;
       }
       else
               dv = 11-dv;

       if(dv != codigo[11])
               return false;

       soma = dv*2;

       for(i=9; i<11; ++i)
               soma += codigo[i]*(13-i);

       dv = soma % 11;

       if(dv <= 1)
       {
               if(cod_estado <= 2)
                       dv = 1 - dv;
               else
                       dv = 0;
       }
       else
               dv = 11-dv;

       if(dv != codigo[12])
               return false;

       return true;
}

function ValidaPIS(codigo)
{
       if( codigo.length != 11 )
               return false;

       pesos = '3298765432';

       soma = 0;
       for(i=0; i<10; ++i)
               soma += codigo[i] * pesos[i];

       dv = soma % 11;

       if(dv != 0)
               dv = 11-dv;

       return dv == codigo[10];
}


function valida_cnh(codigo)
{
       

       if(codigo.length > 11)
               return false;

       codigo = str_pad(codigo, 11, '0', 'L');

       soma = 0;
       for(i=0; i<9; ++i)
               soma += codigo[i]*(9-i);

       dv1 = soma % 11;

       if (dv1 == 10)       
		incr_dig2 = -2;
       else       
		incr_dig2 = 0;
       

       if(dv1 >= 10)
               dv1 = 0;

       if(dv1 != codigo[9])
               return false;

       soma = 0;
       for(i=0; i<9; ++i)
               soma += codigo[i]*(i+1);

       dv2 = soma % 11;

       if((dv2 + incr_dig2) < 0)
               dv2 += 11 + incr_dig2;
       else
               dv2 += incr_dig2;

       if(dv2 >= 10)
               dv2 = 0;

       return dv2 == codigo[10];
}

function valida_pgu(codigo)
{

       if(codigo.length > 9)
               return false;

       codigo = str_pad(codigo, 9, '0', 'L');

       soma = 0;
       for(i=0; i<8; ++i)
               soma += codigo[i]*(2+i);

       dv = soma % 11;
       if(dv > 9)
               dv = 0;

       return dv == codigo[8];
}

function ValidaHabilitacaoMotorista(codigo)
{
       return valida_cnh(codigo) || valida_pgu(codigo);
}

function ValidaSUS(cartaoSus)
{

ok = true;
  
if ((cartaoSus.length != 0)        &&
   (cartaoSus.substr(0,1) != '8')  &&
   (cartaoSus.substr(0,1) != '9')  )
{

  cartaoSusValido = '1';
  if (cartaoSus.length != 15)
  {
     cartaoSusValido = '0';
  }

  pis = cartaoSus.substr(0,11);

  soma = (     ((pis.substr( 0,1)) * 15) +
               ((pis.substr( 1,1)) * 14) +
               ((pis.substr( 2,1)) * 13) +
               ((pis.substr( 3,1)) * 12) +
               ((pis.substr( 4,1)) * 11) +
               ((pis.substr( 5,1)) * 10) +
               ((pis.substr( 6,1)) * 9)  +
               ((pis.substr( 7,1)) * 8)  +
               ((pis.substr( 8,1)) * 7)  +
               ((pis.substr( 9,1)) * 6) +
               ((pis.substr( 10,1)) * 5));


  resto = soma % 11;
  dv = 11  - resto;

  if (dv == 11)
  {
     dv = 0;
  }

  if (dv == 10)
  {
     soma = ((((pis.substr( 0,1)) * 15) +
               ((pis.substr( 1,1)) * 14) +
               ((pis.substr( 2,1)) * 13) +
               ((pis.substr( 3,1)) * 12) +
               ((pis.substr( 4,1)) * 11) +
                   ((pis.substr( 5,1)) * 10) +
                   ((pis.substr( 6,1)) * 9)  +
                   ((pis.substr( 7,1)) * 8)  +
                   ((pis.substr( 8,1)) * 7)  +
                   ((pis.substr( 9,1)) * 6) +
                   ((pis.substr( 10,1)) * 5)) + 2);

     resto = soma % 11;
     dv = 11  - resto;
     resultado = pis+'001'+dv;
  }
  else
  {
     resultado = pis+'000'+dv;
  }


  if ( cartaoSus != resultado )
  {  
     ok = false;
  }


}
else
{


  soma = ((cartaoSus.substr(0,1)) * 15) +
          ((cartaoSus.substr(1,1)) * 14) +
              ((cartaoSus.substr(2,1)) * 13) +
              ((cartaoSus.substr(3,1)) * 12) +
              ((cartaoSus.substr(4,1)) * 11) +
              ((cartaoSus.substr(5,1)) * 10) +
              ((cartaoSus.substr(6,1)) * 9)  +
          ((cartaoSus.substr(7,1)) * 8)  +
          ((cartaoSus.substr(8,1)) * 7)  +
              ((cartaoSus.substr(9,1)) * 6)  +
              ((cartaoSus.substr(10,1)) * 5) +
          ((cartaoSus.substr(11,1)) * 4) +
              ((cartaoSus.substr(12,1)) * 3) +
              ((cartaoSus.substr(13,1)) * 2) +
              ((cartaoSus.substr(14,1)) * 1);

  resto = soma % 11;

  if (resto != 0)
  {
     ok = false;
  }


}


  return ok;

}

/*function ValidaCPF(parNumero) {
    var l_js_Contador;
    //parNumero = LimpaString(parNumero);
    var l_js_Corpo = parNumero.substr(0, 9);
    var l_js_DV = parNumero.substr(9, 2);
    var d1 = 0;
    for (l_js_Contador = 0; l_js_Contador < 9; l_js_Contador++) {
        d1 += l_js_Corpo.charAt(l_js_Contador)*(10 - l_js_Contador);
    }
  if (d1 == 0) 
        return false;
    d1 = 11 - (d1 % 11);
    if (d1 > 9) 
        d1 = 0;
    if (l_js_DV.charAt(0) != d1) {
        return false;
    }

    d1 *= 2;
    for (l_js_Contador = 0; l_js_Contador < 9; l_js_Contador++)    {
        d1 += l_js_Corpo.charAt(l_js_Contador)*(11 - l_js_Contador);
    }
    d1 = 11 - (d1 % 11);
    if (d1 > 9) 
        d1 = 0;
    if (l_js_DV.charAt(1) != d1) {
        return false;
    }
  return true;
}*/

function ValidaCPF(s1){
    var i;
    var s ="";
    
    if (s1 == "") {
        return true;
    }

    if(s1 == "111.111.111-11" ||
    	s1 == "222.222.222-22" ||
    	s1 == "333.333.333-33" ||
    	s1 == "444.444.444-44" ||
    	s1 == "555.555.555-55" ||
    	s1 == "666.666.666-66" ||
    	s1 == "777.777.777-77" ||
    	s1 == "888.888.888-88" ||
    	s1 == "999.999.999-99")
    {
    		return false;
    }
    
    if(s1.length == 14)
    {
	    for (i = 0; i < 14 ; i++) {
	        if (s1.charAt(i) != "." && s1.charAt(i) != "-")
	           s += s1.charAt(i);
	    }
    }

    var c = s.substr(0,9);
    var dv = s.substr(9,2);
    var d1 = 0;
    for (i = 0; i < 9; i++) {
        d1 += c.charAt(i)*(10-i);
    }

    if (d1 == 0){
        return false;
    }

    d1 = 11 - (d1 % 11);

    if (d1 > 9) d1 = 0;
    if (dv.charAt(0) != d1) {
	    return false;
    }

    d1 *= 2;

    for (i = 0; i < 9; i++) {
	    d1 += c.charAt(i)*(11-i);
    }

    d1 = 11 - (d1 % 11);

    if (d1 > 9) d1 = 0;
    if (dv.charAt(1) != d1) {
	    return false;
    }
    return true;
}

function cep(v){
   v=v.replace(/\D/g,"");
   v=v.replace(/^(\d{5})(\d)/,"$1-$2");
   return v;
}
// preenche com 'carac' todos o espa�o a DIR = R ou DIR = L at� completar o tamanho dado em 'casas'
function str_pad(palavra, casas, carac, dir) 
{
  //dir = 'R' => Right; dir = 'L' => Left;

  if(palavra == null || palavra == '') palavra = '0';

  var ret = '';
  var nro = casas - (palavra.length);

  for(var i = 0; i < nro; i++) ret += carac;

  if(dir == 'R')
    ret = palavra + ret;
  else if(dir == 'L')
    ret += palavra;

  return ret;
} 

function is_letter(c)
{
	if(c >= 'a' && c <= 'z') return 1;
	if(c >= 'A' && c <= 'Z') return 1;
	
	return 0;
}

function validaNome (str)
{	
	len = str.length;
	cont = 0;
	
	for(i = 0; i < len; i++)
	{
		if(is_letter(str.charAt(i)))
		{
			cont++;
		}
		else if(cont == 1)
		{

			return false;
		}
		else
		{
			cont = 0;
		}
	}
	if(cont == 1) return false;
	else return true;
}

function RetiraAcentos(Campo)
{
   var Acentos = "�����������������������������������abcdefghijklmnopqrstuvxwyz";
   var Traducao ="AAAAAAAAAEEEEEEIIIIOOOOOOOOUUUUUUCCABCDEFGHIJKLMNOPQRSTUVXWYZ";
   var Posic, Carac;
   var TempLog = "";
   for (var i=0; i < Campo.length; i++)
   {
   Carac = Campo.charAt(i);
   Posic  = Acentos.indexOf(Carac);
   if (Posic > -1)
	  TempLog += Traducao.charAt(Posic);
   else
      TempLog += Campo.charAt(i);
   }
      return (TempLog);
}

/*[]---------------------------------------------------------------------------------------------[]
|Fun��o Verifica Celular    - NAO UTILIZADA NO MOMENTO                                                                        |
[]---------------------------------------------------------------------------------------------[]*/
function verificaCelular (celular)
{
	numero = celular.value;
	alert(numero.charAt(5));
	if(numero.charAt(5) == '7')
		return numero;
	if(numero.charAt(5) == '8')
		return numero;
	if(numero.charAt(5) == '9')
		return numero;
	
	numero = " ";
	return (numero);
}