/*
www.moinho.net
Verifica se um n?mero de CPF ou CNPJ ? v?lido
Fun??o  : isCPFCNPJ
Retorno : true se o n?mero for v?lido
e-mail  : celso.goya@moinho.net
Author  : Desconhecido
Customizado: Celso Goya

Instru??es
Se voc? tiver qualquer d?vida ou sugest?o sobre a funcionalidade desta fun??o por favor envie-nos um e-mail
*/
function isCPFCNPJ(campo,pType){
   if( isEmpty( campo ) ){return false;}

   var campo_filtrado = "", valor_1 = " ", valor_2 = " ", ch = "";
   var valido = false;
        
   for (i = 0; i < campo.length; i++){
      ch = campo.substring(i, i + 1);
      if (ch >= "0" && ch <= "9"){
         campo_filtrado = campo_filtrado.toString() + ch.toString()
         valor_1 = valor_2;
         valor_2 = ch;
      }
      if ((valor_1 != " ") && (!valido)) valido = !(valor_1 == valor_2);
   }
   if (!valido) campo_filtrado = "12345678912";

   if (campo_filtrado.length < 11){
      for (i = 1; i <= (11 - campo_filtrado.length); i++){campo_filtrado = "0" + campo_filtrado;}
   }

   if(pType <= 1){
      if ( ( campo_filtrado.substring(9,11) == checkCPF( campo_filtrado.substring(0,9) ) ) && ( campo_filtrado.substring(11,12)=="") ){return true;}
   }

   if((pType == 2) || (pType == 0)){
      if (campo_filtrado.length >= 14){
         if ( campo_filtrado.substring(12,14) == checkCNPJ( campo_filtrado.substring(0,12) ) ){ return true;}
      }
   }
   
   return false;
}

function checkCNPJ(vCNPJ){
   var mControle = "";
   var aTabCNPJ = new Array(5,4,3,2,9,8,7,6,5,4,3,2);
   for (i = 1 ; i <= 2 ; i++){
      mSoma = 0;
      for (j = 0 ; j < vCNPJ.length ; j++)
         mSoma = mSoma + (vCNPJ.substring(j,j+1) * aTabCNPJ[j]);
      if (i == 2 ) mSoma = mSoma + ( 2 * mDigito );
      mDigito = ( mSoma * 10 ) % 11;
      if (mDigito == 10 ) mDigito = 0;
      mControle1 = mControle ;
      mControle = mDigito;
      aTabCNPJ = new Array(6,5,4,3,2,9,8,7,6,5,4,3);
   }
   return( (mControle1 * 10) + mControle );
}

function checkCPF(vCPF){
   var mControle = ""
   var mContIni = 2, mContFim = 10, mDigito = 0;
   for (j = 1 ; j <= 2 ; j++){
      mSoma = 0;
      for (i = mContIni ; i <= mContFim ; i++)
         mSoma = mSoma + (vCPF.substring((i-j-1),(i-j)) * (mContFim + 1 + j - i));
      if (j == 2 ) mSoma = mSoma + ( 2 * mDigito );
      mDigito = ( mSoma * 10 ) % 11;
      if (mDigito == 10) mDigito = 0;
      mControle1 = mControle;
      mControle = mDigito;
      mContIni = 3;
      mContFim = 11;
   }
   return( (mControle1 * 10) + mControle );
} 


function isEmpty(pStrText){
   var   len = pStrText.length;
   var pos;
   var vStrnewtext = "";

   for (pos=0; pos<len; pos++){
      if (pStrText.substring(pos, (pos+1)) != " "){
         vStrnewtext = vStrnewtext + pStrText.substring(pos, (pos+1));
      }
   }

   if (vStrnewtext.length > 0)
      return false;
   else
      return true;
}



function isEmailValid(auxEmail) {
	
		if('' == auxEmail) {
			alert('Seu email n?o ? v?lido porque est? em branco !\nExemplo de email: fulano@yahoo.com.br');
			return false;
		}
		
		if(auxEmail.length < 5) {
			alert('O email digitado n?o ? v?lido !\nExemplo de email: fulano@netcartas.com.br');
			return false;
		}
		
	
		auxEmail = auxEmail.toLowerCase();
		
		if(	-1 == auxEmail.indexOf("@") || -1 == auxEmail.indexOf(".")  ) {
			alert('Seu email nao e valido porque nao contem @ ou a terminacao . antes do dominio, por exemplo .com ou .com.br !\nExemplo de email: fulano@netcartas.com.br');
			return false;
		}
		
		if(	-1 != auxEmail.indexOf("..")) {
			alert('Seu email nao ? valido porque possui .. !\nExemplo de email: fulano@netcartas.com.br');
			return false;
		}
		
		if(-1 != auxEmail.indexOf("@.") || -1 != auxEmail.indexOf(".@") || -1 != auxEmail.indexOf(".@.")) {
			alert('Seu email nao ? valido porque possui um ponto . antes ou depois da arroba @ !\nExemplo de email: fulano@netcartas.com.br');
			return false;
		}
		
		
		if(-1 != auxEmail.indexOf("www.")) {
			alert('Seu email n?o ? v?lido porque contem www., parecendo ser o endereco de um site !\nExemplo de email: fulano@netcartas.com.br');
			return false;
		}
		
		
		if(hasSpecialCharacter(auxEmail)) {
			alert("Acentos, espacos em branco e caracteres especiais nao sao aceitos em enderecos de email !\nExemplo de email: fulano@netcartas.com.br");
			return false;
		}
		
		
	
		return true;
}




	//Funcao que concatena numa variavel um string contendo todos os caracters nao permitidos
	//no campo de login do NetCartas
	function caracteres_invalidos() { 
		var strinvalido = '';
		strinvalido = ' !\"#$%&\\\\()*,/:;<=>?';
		//strinvalido+= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		strinvalido+= '??????????????????????????????????????????????';
		strinvalido+= '[\\\\]^`';
		strinvalido+= '{|}~';
		return strinvalido;
	}
	
	//Funcao que faz a verificacao do campo 
	function hasSpecialCharacter(strlogin) {
		var caracteres = caracteres_invalidos(); //recebe a string com caracters invalidos
		var result = false;
		for (i = 0;i<caracteres.length;i++) { //loop executado de 0 ao numero total de caracters invalidos
			if(strlogin.indexOf(caracteres.charAt(i)) != -1) { //verifica se o value do campo strlogin contem alguma caracter invalido
				var strerror = caracteres.substring(i,i+1); //recebe o caracter errado
				var result = true;
				break; //interrompe o loop
			}
		}
		return result;
	}



	function getAge(birthDay){
		var now = new Date();
		var bD = birthDay.split('/');
		var born = new Date(bD[2],bD[1]*1-1,bD[0]);
		var years = new Date(now.getTime() - born.getTime());
		var base = new Date(0);
		return(years.getFullYear()-base.getFullYear());
	}





/*** 
* Descri??o.: formata um campo do formul?rio de 
* acordo com a m?scara informada... 
* Par?metros: - objForm (o Objeto Form) 
* - strField (string contendo o nome 
* do textbox) 
* - sMask (mascara que define o 
* formato que o dado ser? apresentado, 
* usando o algarismo "9" para 
* definir n?meros e o s?mbolo "!" para 
* qualquer caracter... 
* - evtKeyPress (evento) 
* Uso.......: <input type="textbox" 
* name="xxx"..... 
* onkeypress="return txtBoxFormat(document.rcfDownload, 'str_cep', '99999-999', event);"> 
* Observa??o: As m?scaras podem ser representadas como os exemplos abaixo: 
* CEP -> 99.999-999 
* CPF -> 999.999.999-99 
* CNPJ -> 99.999.999/9999-99 
* Data -> 99/99/9999 
* Tel Resid -> (99) 999-9999 
* Tel Cel -> (99) 9999-9999 
* Processo -> 99.999999999/999-99 
* C/C -> 999999-! 
* E por a? vai... 
***/

function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
      var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

	  if(document.all) { // Internet Explorer
		nTecla = evtKeyPress.keyCode; }
	  else if(document.layers) { // Nestcape
		nTecla = evtKeyPress.which;
	  } else if(document.getElementById) { // FireFox
		nTecla = evtKeyPress.which;
	  }
		
      sValue = objForm[strField].value;

      // Limpa todos os caracteres de formata??o que
      // j? estiverem no campo.
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( " ", "" );
      sValue = sValue.toString().replace( " ", "" );
      fldLen = sValue.length;
      mskLen = sMask.length;

      i = 0;
      nCount = 0;
      sCod = "";
      mskLen = fldLen;

      while (i <= mskLen) {
        bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
        bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

        if (bolMask) {
          sCod += sMask.charAt(i);
          mskLen++; }
        else {
          sCod += sValue.charAt(nCount);
          nCount++;
        }

        i++;
      }


		if (nTecla != 8) { // backspace
		objForm[strField].value = sCod;
		if (sMask.charAt(i-1) == "9") { // apenas n?meros...
          return ((nTecla > 47) && (nTecla < 58)); } // n?meros de 0 a 9
        else { // qualquer caracter...
          return true;
        } }
      else {
        return true;
      }
    }
//Fim da Fun??o M?scaras Gerais

