// Ver: 4.00

function contastring(tipo,texto) {
  //tipo
	//1 - todos os caracteres
	//2 - sem espaços e enters
  sf = texto;
	tf = texto.length;
	qf = 0;
	for (i=0; i<tf; i++) {
	  pf = sf.substr(i,1); 
		vl = pf.charCodeAt(0); 
		if (tipo == 1) qf = qf + 1;
		else if (vl > 13 && pf != " ") qf = qf + 1;				
	}
  return qf;
}

function sonumeros(e){
  if (document.all) // Internet Explorer
     var tecla = event.keyCode;
  else if(document.layers) // Nestcape
     var tecla = e.which;
  if (tecla > 47 && tecla < 58) // numeros de 0 a 9     // if (tecla < 47 || tecla > 58) // letras de A a Z
    return true;
  else if (tecla == 13) // enter
    return true;	
  else{
    if (tecla != 8) { // backspace
      event.keyCode = 0;//return false;
      alert("Digite somente números!");
	}  
    else return true;
  }
}

function validCpf(formField){
	 cpf = formField.value;
	 erro = new String;
	 if (cpf.length > 11) cpf = cpf.substr(0,3) + cpf.substr(4,3) + cpf.substr(8,3) + cpf.substr(12,2);
	 if (cpf.length < 11) erro = "CPF inválido! \n\n"; 
	 var nonNumbers = /\D/;
	 if (nonNumbers.test(cpf)) erro = "CPF deve conter somente números! \n\n"; 
	 if (cpf == "00000000000" || cpf == "11111111111" || cpf == "22222222222" || cpf == "33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf == "66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf == "99999999999"){
				 erro = "CPF inválido!"
	 }
	   var a = [];
	   var b = new Number;
	   var c = 11;
	   for (i=0; i<11; i++){
			   a[i] = cpf.charAt(i);
			   if (i < 9) b += (a[i] * --c);
	   }
	   if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
	   b = 0;
	   c = 11;
	   for (y=0; y<10; y++) b += (a[y] * c--); 
	   if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
	   if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10])){
			   erro ="CPF inválido!";
	   }
	   if (erro.length > 0){
			   alert(erro);
	   		   formField.focus();
			   return false;
	   }
	   return true;
}

function formatar(campo, mask, evt) { 
 if(document.all) { // Internet Explorer 
    key = evt.keyCode; } 
 else{ // Nestcape 
       key = evt.which; 
 } 

 string = campo.value;  
 i = string.length;

 if (i < mask.length) {
  if (mask.charAt(i) == '§') {
       return (key > 47 && key < 58);
      } else {
       if (mask.charAt(i) == '!') {  return true;  }
   for (c = i; c < mask.length; c++) {
         if (mask.charAt(c) != '§' && mask.charAt(c) != '!')
         campo.value = campo.value + mask.charAt(c);
      else if (mask.charAt(c) == '!'){
                return true;
       } else {
         return (key > 47 && key < 58);
          }
       }
    }
  } else return false;
}

function listaRequired(formField,fieldLabel){
	var result = true;
	if (formField.value == 0){
		alert('O campo "' + fieldLabel +'" deve ser selecionado!');
		formField.focus();
		result = false;
	}	
	return result;
}

function validRequired(formField,fieldLabel){
	var result = true;
	s = formField.value;
	s = s.replace(/^( *)|( *)$/,"");
	//if (formField.value == ""){
	if (s == ""){
		alert('O campo "' + fieldLabel +'" deve ser preenchido!');
		formField.focus();
		result = false;
	}	
	return result;
}

function realTeste(formField,fieldLabel){
   var result = true;
   if ((formField.value != "") && (isNaN(parseFloat(formField.value)))){   
      alert('O campo "' + fieldLabel +'" não contém número!');
	  formField.focus();
	  result = false;
   }
   else{
     if (!allReal(formField.value)){
          alert('O campo "' + fieldLabel +'" não contém número!');
          formField.focus();
 	      result = false;	 		 
	 }
   }	 

   
	return result;
}

function inteiroTeste(formField,fieldLabel){
   var result = true;
   if ((formField.value != "") && (isNaN(parseInt(formField.value)))){   
      alert('O campo "' + fieldLabel +'" não contém um número!');
	  formField.focus();
	  result = false;
   }
   else{
     var theStr = new String(formField.value);
     var index = theStr.indexOf(".");
     if (index > 0){
      alert('O campo "' + fieldLabel +'" não contém um número inteiro!');
	  formField.focus();
	  result = false;	 
	 }
	 else{
       var index = theStr.indexOf(",");
       if (index > 0){
        alert('O campo "' + fieldLabel +'" não contém um número inteiro!');
	    formField.focus();
  	    result = false;	 
	   }
	   else{
	     if (!allDigits(formField.value)){
            alert('O campo "' + fieldLabel +'" não contém um número inteiro!');
	        formField.focus();
  	        result = false;	 		 
		 }
	   }	 
	 }   
   }
	return result;
}

function allDigits(str){
   return inValidCharSet(str,"0123456789");
}

function allReal(str){
   return inValidCharSet(str,".,0123456789");
}

function inValidCharSet(str,charset){
	var result = true;
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0) {
			result = false;
			break;
		}
	
	return result;
}


function dataTeste(formField,fieldLabel){
	var result = true;
	dt = formField.value;
	sdia = dt.substr(0,2);
	smes = dt.substr(3,2);
	sano = dt.substr(6,4);
	if (isNaN(parseInt(sdia))) result = false;
	if (isNaN(parseInt(smes))) result = false;
	if (isNaN(parseInt(sano))) result = false;	
 
	if (result)	{
	    dia = parseInt(sdia);
		mes = parseInt(smes);
		ano = parseInt(sano);
		if ((mes < 0) || (mes > 12)) result = false;
		if ((dia < 0) || (dia > 31)) result = false;		
				 
		if (result) {
		  if (mes == 2) {
		   if ((dia == 29) && (ano % 4 == 0)) result = true;
		   else if (dia > 28) result = false;
		  } 
		  else{		  		    
		    if ((dia == 31) && ((mes == 4) || (mes == 6) || (mes == 9) || (mes == 11))) result = false;
		  }		  
	    }
				 
	}
	    			
	if (!result){
		alert('Entre uma data válida no formato DD/MM/YYYY para o campo "' + fieldLabel +'".');
		formField.focus();		
	}
	
	return result;
}

function mesmoMes(formField1,formField2){
	var result = true;
	dt1 = formField1.value;
	sdia1 = dt1.substr(0,2);
	smes1 = dt1.substr(3,2);
	sano1 = dt1.substr(6,4);
	dt2 = formField2.value;
	sdia2 = dt2.substr(0,2);
	smes2 = dt2.substr(3,2);
	sano2 = dt2.substr(6,4);
	if ((smes1 != smes2) || (sano1 != sano2)) result = false;	
	
	if (!result){
		alert('As datas devem ser do mesmo mês/ano!');
		formField1.focus();		
	}	
	return result;
}

function dataTesteantes(formField,fieldLabel){
	var result = true;
	var elems = formField.value.split("/");
	result = (elems.length == 3); // should be three components
	if (result)	{
  	    var day = parseInt(elems[0]);		
	    var month = parseInt(elems[1]);		
		var year = parseInt(elems[2]);
 		result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
		 	     allDigits(elems[1]) && (day > 0) && (day < 32) &&
				 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));	
				 
		if (result) {
		  if (month == 2) {
		   if ((day == 29) && (year % 4 == 0)) result = true;
		   else if (day > 28) result = false;
		  } 
		  else{		  		    
		    if ((day == 31) && ((month == 4) || (month == 6) || (month == 9) || (month == 11))) result = false;
		  }		  
	    }		  				 
				 
	}
	    			
	if (!result){
		alert('Entre uma data válida no formato DD/MM/YYYY para o campo "' + fieldLabel +'".');
		formField.focus();		
	}
	
	return result;
}

