// Funções genéricas
// valida email
function validaEmail(email){
	return email.search(/(\w[\w\.\+]+)@(.+)\.(\w+)$/)==0;
}

// valida cpf.
// adaptado de: http://forum.imasters.uol.com.br/index.php?showtopic=195915
function validaCPF(cpf){
    var i;
    var soma = soma2 = 0;
    if (!(cpf.match(/^[0-9]{3,3}[.]{0,1}[0-9]{3,3}[.]{0,1}[0-9]{3,3}[-]{0,1}[0-9]{2,2}$/))) {
        return false;
    }
    cpf = retiraCaracter(retiraCaracter(cpf, '.'), '-');
    for(i=0;i<10;i++) {
        if (i<9) {
            soma += cpf.charAt(i) * (10 - i);
        }
        soma2 += cpf.charAt(i) * (11 - i);
    }
    if(((soma % 11) < 2 ? 0 : 11 - (soma  % 11 )) != cpf.charAt(9)) {
        return false;
    }
    return (((soma2 % 11 ) < 2 ? 0 : 11 - (soma2 % 11 )) != cpf.charAt(10)) ? false : true;
}

function vcnpj( c ) {

var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais, cnpj = c.value.replace(/\D+/g, '');
digitos_iguais = 1;
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;
		 }
} 


// função para retirar caracteres
// adaptado de: http://forum.imasters.uol.com.br/index.php?showtopic=195775
function retiraCaracter(string, caracter) {
    var i = 0;
    var final = '';
    while (i < string.length) {
        if (string.charAt(i) == caracter) {
            final += string.substr(0, i);
            string = string.substr(i+1, string.length - (i+1));
            i = 0;
        }
        else {
            i++;
        }
    }
    return final + string;
}

function check_date(DATA) {
	var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/;
	var msgErro = 'Formato inválido de data (DD/MM/AAAA).';
	var vdt = new Date();
	var vdia = vdt.getDay();
	var vmes = vdt.getMonth();
	var vano = vdt.getFullYear();
	if ((DATA.value.match(expReg)) && (DATA.value!='')){
		var dia = DATA.value.substring(0,2);
		var mes = DATA.value.substring(3,5);
		var ano = DATA.value.substring(6,10);
		if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30)){
//			alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias.");
//			return false;
		} else{ //1
			if(ano%4!=0 && mes==2 && dia>28){
//				alert("Data incorreta!! O mês especificado contém no máximo 28 dias.");
//				return false;
			} else{ //2
				if(ano%4==0 && mes==2 && dia>29){
//					alert("Data incorreta!! O mês especificado contém no máximo 29 dias.");
//					return false;
				} else{ //3
					if (ano > vano) {
//						alert("Data incorreta!! Ano informado maior que ano atual.");
//						return false;
					}else{ //4
						//alert ("Data correta!");
						return true;
					} //4-else
				} //3-else
			}//2-else
		}//1-else
	} else { //5
//		alert(msgErro);
	}
	return false;
}

/*----------------------------------------------------------------------------
Formatação para qualquer mascara
** adaptado de:
http://www.codigofonte.com.br/codigo/js-dhtml/formulario/funcao-para-formatacao-de-mascara-generica
-----------------------------------------------------------------------------*/
function formatar(src, mask){
  var i = src.value.length;
  var saida = mask.substring(0,1);
  var texto = mask.substring(i)
if (texto.substring(0,1) != saida)
  {
    src.value += texto.substring(0,1);
  }
}

function URLencode(sStr) {
    return escape(sStr).
             replace(/\+/g, '%2B').
                replace(/\"/g,'%22').
                   replace(/\'/g, '%27').
                     replace(/\//g,'%2F');
  }


