// VALIDACAO DE E-MAIL
function IsValidEmail(str) {
	var emailexp = /^[a-z][a-z_0-9\.]+@[a-z_0-9\.]+\.[a-z]\.*[a-z]*$/i
	if(!emailexp.test(str)){
		alert('Endereço eletrônico incorreto.');
		return false;
	}else
		return true;
}

// FORMATACAO PARA QUALQUER MASCARA SOMENTE COM NUMEROS
function Mask(src, teclapres, mask){
	switch (mask){
		case 'DATA':
			mask = '##/##/####';
			maskSize = 9
		break
		case 'CPF':
			mask = '###.###.###-##';
			maskSize = 13
		break;
		case 'CEP':
			mask = '#####-###';
			maskSize = 8
		break;
		case 'CNPJ':
			mask = '##.###.###/####-##';
			maskSize = 17
		break;
		default:
			mask
			maskSize = mask.length - 1
		break;
	}
	var i = src.value.length;
	var saida = mask.substring(0,1);
	var texto = mask.substring(i);
	var tecla = teclapres.keyCode;
	var vr = event.srcElement.value;
	var tam = vr.length;
	if(tam > maskSize) event.keyCode = '127';
	
		if (tam < 10 && tecla != 8)	tam = vr.length + 1 ;
		if (tecla == 8 ) tam = tam - 1 ;
		if (tecla >= 48 && tecla <= 57){
			if (texto.substring(0,1) != saida)
				src.value += texto.substring(0,1);
		}else{
			event.keyCode = '127';
		}
}

// VALIDACAO DE DATAS - DD/MM/AAAA
function Date_Validation(pData, fldName){
	if (pData != '') {
		var datePat = /^(\d{2})(\/)(\d{2})\2(\d{4})$/;
		var matchArray = pData.match(datePat); // is the format ok?
		if (matchArray == null) {
			alert('Favor digitar a data do campo '+fldName+' no formato dd/mm/aaaa.')
			return false;
		}
		day = matchArray[1]; // parse date into variables
		month = matchArray[3];
		year = matchArray[4];
		if (day < 1 || day > 31) {
			alert('O dia deve estar entre 1 e 31.');
			return false;
		}
		if (month < 1 || month > 12) { // check month range
			alert('O mês deve estar entre 01 e 12.');
			return false;
		}
		if ((month==4 || month==6 || month==9 || month==11) && day==31) {
			alert('O mês '+month+' não tem 31 dias!')
			return false
		}
		if (month == 2) { // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap)) {
				alert('Fevereiro ' + year + ' não tem ' + day + ' dias!');
				return false;
			}
		}
		if (year < 1900) {
			alert('O ano é inválido.');
			return false;
		}
		return true
	}else
		return false;
}

// VALIDA APENAS LETRAS
function isValidAlphabet(objValue, fldName){
	var nRet = true;
	var strValidAlphabet="abcdefghijklmnopqrstuvwxyzçáéíóúãõABCDEFGHIJKLMNOPQRSTUVWXYZÇÁÉÍÓÚÃÕ'´";
	for (nCount = 0; nCount < objValue.length; nCount++){
		strTempChar = objValue.substring(nCount,nCount+1);
		if (strValidAlphabet.indexOf(strTempChar,0) == -1){
			alert('O campo '+fldName+' deve conter somente letras!')
			return false; 
		}
	}
	return nRet; 
}

// VALIDA APENAS NUMEROS
function isValidNumbers(objValue, fldName){
	var nRet = true;
	var strValidNumbers = '0123456789';
	for (nCount = 0; nCount < objValue.length; nCount++){
		strTempChar = objValue.substring(nCount,nCount+1);
		if (strValidNumbers.indexOf(strTempChar,0)==-1){
			alert('O campo '+fldName+' deve conter somente números!')
			return false; 
		}
	}
	return nRet; 
}

// VALIDA FORMATO MOEDA - NACIONAL
function IsValidMoney(str, fldName) {
	var objRegExp  = /^[0-9]*,\d{2}$/;
	if(!objRegExp.test(str)){
		alert('Formato de moeda incorreto no campo '+fldName+'.');
		return false;
	}else
		return true;
}

// VALIDACAO DE CPF *******************/
function cpf(pcpf){
	pcpf = pcpf.replace( " ", "" );
	pcpf = pcpf.replace( ".", "" );
	pcpf = pcpf.replace( ".", "" );
	pcpf = pcpf.replace( "-", "" );
	if (pcpf.length != 11) {
 		sim=false
	}
	else {
		sim=true
	}
	if((pcpf == '00000000000') || (pcpf == '11111111111') || (pcpf == '22222222222') || (pcpf == '33333333333') || (pcpf == '44444444444') || (pcpf == '55555555555') || (pcpf == '66666666666') || (pcpf == '77777777777') || (pcpf == '88888888888') || (pcpf == '99999999999')){
		sim = false		
	}
	else {
		sim = true
	}
	if (sim) {// valida o primeiro digito
	  	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 { // valida o segundo digito
				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
	   	}
	}
 }
 return sim;
}
/**************************************/

// VALIDACAO DE CNPJ ******************/
function validaCNPJ(valor) {
	CNPJ = valor.value;
	erro = new String;
  if (CNPJ.length < 18) erro += "É necessario preencher corretamente o número do CNPJ! "; 
  if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
  	if (erro.length == 0) erro += "É necessário preencher corretamente o número do CNPJ! ";
  }
  //substituir os caracteres que não são números
  if(document.layers && parseInt(navigator.appVersion) == 4){
   x = CNPJ.substring(0,2);
   x += CNPJ. substring (3,6);
   x += CNPJ. substring (7,10);
   x += CNPJ. substring (11,15);
   x += CNPJ. substring (16,18);
   CNPJ = x; 
  } else {
    CNPJ = CNPJ. replace (".","");
    CNPJ = CNPJ. replace (".","");
    CNPJ = CNPJ. replace ("-","");
    CNPJ = CNPJ. replace ("/","");
  }
  var nonNumbers = /\D/;
  if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números! "; 
  var a = [];
  var b = new Number;
  var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
  for (i=0; i<12; i++){
   a[i] = CNPJ.charAt(i);
   b += a[i] * c[i+1];
	}
  if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
  b = 0;
  for (y=0; y<13; y++) {
   b += (a[y] * c[y]); 
  }
  if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
  if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
   erro +="Dígito verificador com problema!";
  }
	if (erro.length > 0){
		return false;
	}
	return true;
}
/**************************************/

// FUNÇÃO PARA VALIDAR CPF /
function isValidCPF(objValue, fldName){
	var nRet = true;
	objValue = objValue.replace( " ", "" );
	objValue = objValue.replace( ".", "" );
	objValue = objValue.replace( ".", "" );
	objValue = objValue.replace( "-", "" );
	if (objValue.length != 11) {
 		nRet=false
	}
	else {
		nRet=true
	}
	if((objValue == '00000000000') || (objValue == '11111111111') || (objValue == '22222222222') || (objValue == '33333333333') || (objValue == '44444444444') || (objValue == '55555555555') || (objValue == '66666666666') || (objValue == '77777777777') || (objValue == '88888888888') || (objValue == '99999999999')){
 		nRet=false
	}
	else {
		nRet = true
	}
	if (nRet) {// valida o primeiro digito
	  	for (j=0;((j<=(objValue.length-1))&& nRet); j++){
		   	val = objValue.charAt(j)
		   	if((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4")&&(val!="5")&&(val!="6")&&(val!="7")&&(val!="8")){
		 		nRet=false
			}
   	}
		if (nRet){
		    soma = 0
		    for (j=0;j<=8;j++){
		     val = eval(objValue.charAt(j))
		     soma = soma + (val*(j+1))
		    }
	    	resto = soma % 11
		    if (resto>9) dig = resto -10
		    else  dig = resto
		    if (dig != eval(objValue.charAt(9))) { 
		 		nRet=false
			}
		 	else { // valida o segundo digito
				soma = 0
				for (j=0;j<=7;j++){
		    		val = eval(objValue.charAt(j+1))
		    		soma = soma + (val*(j+1))
				}
				soma = soma + (dig * 9)
		    resto = soma % 11
		    if (resto>9) dig = resto -10
		    else  dig = resto
		   	if (dig != eval(objValue.charAt(10))) { 
		 		nRet=false
			}
	    	else nRet = true
	   	}
	}
 }
 	if(!nRet)
		alert("CPF inválido");
	return nRet; 
}

/**************************************/

function CheckLen(target){
	
	MAXCHARACTERS = 2500;
	CharsLeft = MAXCHARACTERS;
	StrLen = target.value.length;

	if (target.name == "textarea"){
		if (StrLen == 1 && document.form1.textarea.value.substring(0,1) == " "){
	    	document.form1.textarea.value = "";
	    	StrLen = 0;
	    }
		StrLen = StrLen + document.form1.callback.value.length ;
		if (StrLen > MAXCHARACTERS){
	   		document.form1.textarea.value = document.form1.textarea.value.substring(0,document.form1.textarea.value.length-1);
	   		CharsLeft = 0;
	   	}
	   	else{
	  		CharsLeft = CharsLeft - StrLen;
		}
	}		
	else{
		if (StrLen == 1 && document.form1.callback.value.substring(0,1) == " "){
    		document.form1.callback.value = "";
    		StrLen = 0;
		}
		StrLen = StrLen + document.form1.textarea.value.length ;
		if (StrLen > MAXCHARACTERS){
		    document.form1.callback.value = document.form1.callback.value.substring(0,document.form1.callback.value.length-1);
		    CharsLeft = 0;
		}
		else{
    		CharsLeft = CharsLeft - StrLen;
		}
	}
	
	document.form1.totalCounter.value = CharsLeft;
}
/**************************************/
