// @Atuthor Vitor Ruiz Leonel

/************************
* Funções Úteis
*************************/
/* 
 * autor: Anderson Marques
 * Firefox : 2.0.0.4
 * Internet Explorer : 6.0.29
 * $Date: 21-06-2007  22:25:00 $
 * version: 1.0
 */

/**
 * Descrio: Esta funo retorna somente os nmeros de um conjunto 
 * de string passado como parmetro. 
 * 
 * @param {String} texto
 * @return {String} - somente os nmero.
 */

function somenteNumero(texto){
 var valid    = "0123456789";
 var numerook = "";
 var temp;
  for (var i=0; i< texto.length; i++) {
    temp = texto.substr(i, 1);
    if (valid.indexOf(temp) != -1) 
      numerook = numerook + temp;
   } 

 return(numerook);

}


function somenteNumero_id(obj, id){
 var valid    = "0123456789,";
 var numerook = "";
 var temp;
 var texto = obj.value;
 	
 	temp = texto.substr(texto.length - 1  , 1);
    
    if (valid.indexOf(temp) != -1){ 
    	
    	
    	obj.value = texto;
    	
    	
    }else{
    	obj.value = texto.substr(0, texto.length -1);
    	
    }
  	
  	
  	
    /*for (var i=0; i< texto.length; i++) {
    temp = texto.substr(i, 1);
    if (valid.indexOf(temp) != -1) 
      numerook = numerook + temp;
   }*/ 

 //return(numerook);

}




/**
 * Descrio: Esta funo retorna somente os caracteres que no esto presente no filtro
 * 
 * @param {String} texto
 * @param {String} filtrar
 * @return {String} - somente os caracteres que no esto presente no filtro.
 */
function filtraTexto(texto, filtrar){
 var valid    = filtrar;
 var numerook = "";
 var temp;

  for (var i=0; i< texto.length; i++) {
    temp = texto.substr(i, 1);
    if (valid.indexOf(temp) == -1) 
      numerook = numerook + temp;
   } 

 return(numerook);

}

/**
 * 
 * Descrio: Esta funo permite que sejam digitadas somente letras. 
 * 
 * @example <input onkeyup='somenteNumero(event)' />
 * 
 * @param {Event} event
 * @return {boolean}
 */
function digitaLetra(event){
 	if (event.keyCode) code = event.keyCode;  	
	else if (event.which) code =event.which; // Netscape 4.?
	else if (event.charCode) code = event.charCode; // Mozilla
	charCode = String.fromCharCode(code);
	var valid    = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	if (valid.indexOf(charCode) == -1){
		return false;
	} else{
		return true;
	}
 
}

/**
 * Descrio: Esta funo permite que sejam digitadas somente nmeros. 
 * @param {Event} event
 * @return {boolean}
 */

function digitaNumero(event){
	if (event.keyCode) code = event.keyCode;  	
	else if (event.which) code =event.which; // Netscape 4.?
	else if (event.charCode) code = event.charCode; // Mozilla
	charCode = String.fromCharCode(code);

	var valid    = "1234567890";
	if (valid.indexOf(charCode) == -1){
		return false;
	} else{
		return true;
	}

}

/**
 * Descrio: Esta funo limita a quantidade de caracteres a serem digitados.
 * 
 * @param {Object} campo  - componente  onde ser digitada a string
 * @param {Number} TamanhoMaximo - tamanho mximo permitido para a string
 * @return string com o tamanho mximo
 */
function tamanhoMaximo(campo, TamanhoMaximo){
    if (campo.value.length > TamanhoMaximo)	{
	  campo.value = campo.value.substring(0,TamanhoMaximo);
    }
}


/**
 * Validar Campo de Senha
 * Verifica se o Campo Senha é Igual ao ConfirmarSenha
 */
 
function valida_Senha(senha, comfirmarSenha){
	pass = false;
	
	if(senha.value == comfirmarSenha.value && senha.value.length > 2 ){
		//alert(senha.value + " E " + comfirmarSenha.value);
		pass = true ;
	}
	return pass; 
	
}

String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
}
function valida_CampoEmBranco(campo, maxStr){
	
	campo.value = campo.value.trim();
	
	if(campo.value.length > maxStr){
		return true;
	}else{
		return false;
	}
	
	//alert('Campo em Branco ' + campo.value.trim());
	
}
function valida_Login(campo){
	if(campo.value.length > 3 ){
		return true;
	}else{
		return false;
	}
}

/**
 * Validação de E-mail
 */
function valida_Email(obj)
{ pass= true;
  pass = valida_CampoEmBranco(obj,2);
  var txt = obj.value;
  
  if ((txt.length != 0) && ((txt.indexOf("@") < 1) || (txt.indexOf('.') < 7)))
  {
    //alert('Porfavor, Digite o E-mail Corretamente ');
	//obj.focus();
	pass = false;
  }
  return pass;
}


/**********************
* Máscara de CPF
**********************/

/**
 * Descrição: Esta função coloca a máscara do CPF . 
 * @param {Object} textField
 * @return CPF com a máscara.
 */

function maskCPF(textField) {
	
	if (false == validaCPF(textField.value)) {
		alert("Confira o CPF, pois a numeração está incorreta");
		//textField.focus();
		return false;
	}
	var strValor = textField.value;
	strValor = somenteNumero(strValor);
	var strTmpValor = "";
	var iRev = 0;
	for (var i = 0; i < strValor.length; i++) {
		iRev = strValor.length - i - 1;
		switch (i) {
			case 2:
				strTmpValor = "-" + strTmpValor;
				break;
			case 5:
				strTmpValor = "." + strTmpValor;
				break;
			case 8:
				strTmpValor = "." + strTmpValor;
				break;
			case 11:
				strTmpValor = "." + strTmpValor;
				break;
		}
		strTmpValor =  strValor.charAt(iRev) + strTmpValor;
	}
	textField.value = strTmpValor;
}

/**
 * Descrição: Esta função verifica se o CPF é válido. 
 * @param {String} cpf
 * @return true se CPF válido, false se CPF inválido. 
 */
function validaCPF(cpf) {
	s = cpf.value;
	s = filtraTexto(s, ".-/\\");
	
	//tamanho = s.value.length();
	
	if (isNaN(s)) {
		alert('CPF inválido');
		return false;
		
	}
	var 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) {
		alert('CPF inválido');
		return false;
	}         
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;         
	if (dv.charAt(0) != d1) {
		alert('CPF inválido');
		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) {
		
		 alert('CPF inválido');
         //cpf.focus();
         return false;
	}
	return true;
}

/**
*  Máscara de CNPJ   *
*/

function ValidaCNPJ(campo)
{
 nc = campo;
 if (campo.value != '') {
   var CNPJ = campo.value;

   while (CNPJ.indexOf(".") != -1)
	 CNPJ = CNPJ.replace(".","");
   while (CNPJ.indexOf("-") != -1)
 	 CNPJ = CNPJ.replace("-","");
   while (CNPJ.indexOf(" ") != -1)
	 CNPJ = CNPJ.replace(" ","");
   while (CNPJ.indexOf("/") != -1)
	 CNPJ = CNPJ.replace("/","");

   var cnpjCalc = CNPJ.substr(0,12);  
   var cnpjSoma = 0;
   var cnpjDigit = 0;  
   var digit = "";    
  
   for (i = 0;  i < 4;  i++) {
     cnpjSoma = cnpjSoma + parseInt(cnpjCalc.charAt(i)) * (5 - i);
    } 
  
   for (i = 0;  i < 8;  i++) {
     cnpjSoma = cnpjSoma + parseInt(cnpjCalc.charAt(i+4)) * (9 - i);            
    }    
 
   cnpjDigit = 11 - cnpjSoma%11;       

   if ((cnpjDigit == 10) || (cnpjDigit == 11)){     
     cnpjCalc = cnpjCalc + "0";        
    } 
   else {     
     digit = digit + cnpjDigit; 
     cnpjCalc = cnpjCalc + (digit.charAt(0));
    }
  
   cnpjSoma = 0;
  
   for (i = 0;  i < 5;  i++){
     cnpjSoma = cnpjSoma + parseInt(cnpjCalc.charAt(i)) * (6 - i);    
    }  
  
   for (i = 0;  i < 8;  i++) {
     cnpjSoma = cnpjSoma + parseInt(cnpjCalc.charAt(i+5)) * (9 - i);    
    }

   cnpjDigit = 11 - cnpjSoma%11;         
    
   if ((cnpjDigit == 10) || (cnpjDigit == 11)) {    
     cnpjCalc = cnpjCalc + "0";    
    } 
   else {     
     digit = "";
     digit = digit + cnpjDigit; 
     cnpjCalc = cnpjCalc + (digit.charAt(0))        
    }
  
   if (CNPJ != cnpjCalc) { 
	 	alert('CNPJ inválido');
         //campo.focus();
         return false;
	
    }
   return true;
  } 
}


function MascaraCNPJ(campo,w){
   var CNPJ = somenteNumero(campo.value);
   var CNPJAux = ''; 
   var campo1 = campo.value;

   if (w.keyCode  == 8) { 
     if (campo1.length == 2 || campo1.length == 6 || campo1.length == 10 || campo1.length == 15) {
        CNPJ = CNPJ.substr(0,CNPJ.length -1);
       } 
    }
    
   if (CNPJ.length < 15) {
     for (var i=0; i<CNPJ.length; i++) {
       CNPJAux = CNPJAux + CNPJ.substr(i,1);     
       if (i == 1 || i == 4) {
         CNPJAux = CNPJAux + ".";
        }
       if (i == 7) {
         CNPJAux = CNPJAux + "/";
        }
       if (i == 11) {
         CNPJAux = CNPJAux + "-";
        }    
      }  
     campo.value = CNPJAux;
    }
   else {
      campo.value = campo.value.substr(0,18);
      //ValidaCNPJ(campo);
    }    
}


/**
 * Valida Cadastrar_usuario
 * 
 * */
 
function valida_formUsuario(frm){
	
	var pass = false;
	var erro = 0;
	var arrayErro = new Array();
	
	campoNome = valida_CampoEmBranco(frm.txtNome, 2);
	campoCpf = validaCPF(frm.txtCpf.value);
	campoN = valida_CampoEmBranco(frm.txtNumero,0);
	campoCep = frm.txtCep;
	campoSenha = valida_Senha(frm.txtSenha, frm.txtConfirmarSenha);
	campoEmail = valida_Email(frm.txtEmail);
	campoUsuario = valida_CampoEmBranco(frm.txtLogin,0);
	
	
	
	
	if(campoNome === false){
		erro += 1;
		arrayErro[erro] = 'Nome'; 
		
		//alert('Campo: ' + valida_CampoEmBranco(frm.txtNome));
		//alert('Campo Nome em Branco');
	}
	
	if(campoCpf === false){
		erro++;
		arrayErro[erro] = 'CPF';
		
	}
	if (campoN === false){
		erro++;
		arrayErro[erro] = 'Número';
	}
	
	//frm.txtSenha
	if(campoSenha === false){
		erro++;
		arrayErro[erro] = 'Senha';
		
	}
	
	if (campoEmail === false){
		erro++;
		arrayErro[erro] = 'E-mail';
		
	}
	
	if(campoUsuario == false){
		erro++;
		arrayErro[erro] = 'Usuário';
		
		
	}
	
	//validaCPF
	if(erro>0){
		msg = '\n';
		for(i=1; i<=erro; i++){
			msg += '- ' +arrayErro[i] + '\n';
		}
		alert("Erro ao tentar gravar!\nFavor verificar nos seguintes Campos:" + msg);
		pass = false; 
	}else{
		pass = true;
	}
	
	return pass;
	
}
 

function vcnpj(c) {

     var num, numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais, cnpj = c.value.replace(/\D+/g, '');
     digitos_iguais = 1;
    if(cnpj != "")
	{
		if (cnpj.length != 14) 
	    { 
             alert('CNPJ inválido');
            // c.focus();
             return false;
	    }
     	for (i = 0; i < cnpj.length - 1; i++)
           if (cnpj.charAt(i) != cnpj.charAt(i + 1))
                 {
                 digitos_iguais = 0;
                 break;
                 }
     	if (!digitos_iguais)
           {
           tamanho = cnpj.length - 2;
           numeros = cnpj.substring(0,tamanho);
           digitos = cnpj.substring(tamanho);
           soma = 0;
           pos = tamanho - 7;
           for (i = tamanho; i >= 1; i--)
                 {
                 soma += numeros.charAt(tamanho - i) * pos--;
                 if (pos < 2)
                       pos = 9;
                 }
           resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
           if (resultado != digitos.charAt(0))
			{
                 alert('CNPJ inválido');
                // c.focus();
                 return false;
            }

           tamanho = tamanho + 1;
           numeros = cnpj.substring(0,tamanho);
           soma = 0;
           pos = tamanho - 7;
           for (i = tamanho; i >= 1; i--)
                 {
                 soma += numeros.charAt(tamanho - i) * pos--;
                 if (pos < 2)
                       pos = 9;
                 }
           resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
           if (resultado != digitos.charAt(1)){
                 alert('CNPJ inválido');
                // c.focus();
                 return false;
                 }
           else {
     // alert('CNPJ  OK !');
            return true;
            }
           }
     else{
           alert('CNPJ inválido');
           //c.focus();
           return false;
           }
	}
}  
 