// função montar mascara
function mascara(src, mascara) {
	var campo = src.value.length;
	var saida = mascara.substring(0,1);
	var texto = mascara.substring(campo);
	if(texto.substring(0,1) != saida) {
		src.value += texto.substring(0,1);
	}
}

// somente numeros
function SoNumero(e){
    var tecla=(window.event)?event.keyCode:e.which;
    if((tecla > 47 && tecla < 58)) return true;
    else{
    if (tecla != 8) return false;
    else return true;
    }
}

//pula campo
function pulacampo(idobj,idproximo){
	var str = new String(document.getElementById(idobj).value);
	var mx = new Number(document.getElementById(idobj).maxLength);
		if (str.length == mx){
			document.getElementById(idproximo).focus();
	}
}
// pop-up
var win = null;
function popUP(pagina,nome,w,h,scroll){
	LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
	TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
	settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable'
	win = window.open(pagina,nome,settings);
}

//Validação dos campos no Formulário
//**********************************
//tipovalidar : tipo do campo que será validado (serve para data, email, cpf, cnpj e valor)
//nomevalidar : nome que será mostrado na mensagem de alerta (CNPJ, CPF e email não usam)
//obrigatorio : se o campo poderá ou não passar vazio (s ou n)

function validar_campos(form) {
  var elementos = form.elements;
  for (var i=0; i<elementos.length; i++) { 
    if ((elementos[i].getAttribute("type")=="text") || (elementos[i].getAttribute("type")=="select")) {
	  //Validação para todo campo de preenchimento obrigatório
	  //******************************************************
      if (elementos[i].getAttribute("obrigatorio")=="s") {
		if (elementos[i].getAttribute("tipovalidar") == "valor") {  
          if ((elementos[i].value=="") || (elementos[i].value==0) || (elementos[i].value=="0,00")) {			  
            alert("O campo "+elementos[i].getAttribute("nomevalidar")+" é de preenchimento obrigatório.");
			if (elementos[i].value!="") {
	          elementos[i].select();
			} 
			else {
			  elementos[i].focus();	
			}
            return false;
		  } 
	    } 
		else {
          if (elementos[i].value=="") {
            alert("O campo "+elementos[i].getAttribute("nomevalidar")+" é de preenchimento obrigatório.");
	        if (elementos[i].value!="") {
	          elementos[i].select();
			} 
			else {
			  elementos[i].focus();	
			}
		
            return false;
		  }
		}		
	  } 
      //Validação para campo do tipo Data
	  //*********************************
	  if ((elementos[i].getAttribute("tipovalidar") == "data") && (elementos[i].value != "")) {
	    var bissexto = 0;
        var data = elementos[i].value; 
        var tam = data.length;
		var okdata  = 0
        if (tam == 10) {
          var dia = data.substr(0,2)
          var mes = data.substr(3,2)
          var ano = data.substr(6,4)
		  if ((ano > 1900) || (ano < 2100)) {
            switch (mes) {
            case '01':
            case '03':
            case '05':
            case '07':
            case '08':
            case '10':
            case '12':
              if (dia <= 31) {
                okdata = 1;
              }
              break
            case '04':        
            case '06':
            case '09':
            case '11':
              if  (dia <= 30) {
                okdata = 1;
              }
              break
            case '02':
              if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0)) {
                bissexto = 1; 
              } 
              if ((bissexto == 1) && (dia <= 29)) { 
                okdata = 1;                 
              } 
              if ((bissexto != 1) && (dia <= 28)) { 
                okdata = 1; 
              }            
              break                        
            }
          }
        }
		if (okdata == 0) {
          alert("A Data "+data+" é inválida!");
          if (elementos[i].value!="") {
	        elementos[i].select();
		  } 
		  else {
			elementos[i].focus();	
		  }
          return false;
		}
	  }
      //Validação para campo do tipo Email
	  //**********************************
	  if ((elementos[i].getAttribute("tipovalidar") == "email") && (elementos[i].value != "")) {
		  
	  //Validação do Adriano  
	  //  parte1 = elementos[i].value.indexOf("@");
      //  parte2 = elementos[i].value.indexOf(".");
      //  parte3 = elementos[i].value.length;
      //  if (!(parte1 >= 0 && parte2 >= 1 && parte3 >= 7)) {
      //    alert("E-mail deve conter um endereço válido!");
      //    d.email.style.borderLeft = '3px solid #a30708';
      //    d.email.focus();
      //    return false;
      //  }
	  
	    parte1 = elementos[i].value.indexOf("@");
        parte2 = elementos[i].value.indexOf(".");
        parte3 = elementos[i].value.length;
        if (!(parte1 >= 0 && parte2 >= 1 && parte3 >= 7)) {
          alert("E-mail deve conter um endereço válido!");
          if (elementos[i].value!="") {
	        elementos[i].select();
		  } 
		  else {
			elementos[i].focus();	
		  }
          return false;
		}  
	  }  
	  //Validação para campo do tipo CNPJ
	  //*********************************
      if ((elementos[i].getAttribute("tipovalidar") == "cnpj") && (elementos[i].value != "")) {
        var numeros, digitos, soma, icnpj, resultado, pos, tamanho, digitos_iguais;
		var cnpj = elementos[i].value
        digitos_iguais = 1;
        if (cnpj.length != 14) {
		  alert("O CNPJ digitado é inválido!");
          if (elementos[i].value!="") {
	        elementos[i].select();
		  } 
		  else {
			elementos[i].focus();	
		  }
          return false;  
	    }
        for (icnpj = 0; icnpj < cnpj.length - 1; icnpj++) {
          if (cnpj.charAt(icnpj) != cnpj.charAt(icnpj + 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 (icnpj = tamanho; icnpj >= 1; icnpj--) {
            soma += numeros.charAt(tamanho - icnpj) * pos--;
            if (pos < 2) {
              pos = 9;
            }
          }
          resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
          if (resultado != digitos.charAt(0)) {
  		    alert("O CNPJ digitado é inválido!");
            if (elementos[i].value!="") {
	          elementos[i].select();
		    } 
		    else {
			  elementos[i].focus();	
		    }
            return false;
	      }
          tamanho = tamanho + 1;
          numeros = cnpj.substring(0,tamanho);
          soma = 0;
          pos = tamanho - 7;
          for (icnpj = tamanho; icnpj >= 1; icnpj--) {
            soma += numeros.charAt(tamanho - icnpj) * pos--;
            if (pos < 2) {
              pos = 9;
	        }
          }
          resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
          if (resultado != digitos.charAt(1)) {
			alert("O CNPJ digitado é inválido!");
            if (elementos[i].value!="") {
	          elementos[i].select();
		    } 
		    else {
			  elementos[i].focus();	
		    }
            return false;
	      }
          //return true;
        }
        else {
		  alert("O CNPJ digitado é inválido!");
          if (elementos[i].value!="") {
	        elementos[i].select();
		  } 
		  else {
			elementos[i].focus();	
		  }
          return false;
	    }
      }  
	  //Validação para campo do tipo CPF
	  //********************************
	  if ((elementos[i].getAttribute("tipovalidar") == "cpf") && (elementos[i].value != "")) {
        var posicao, icpf, soma, dv, dv_informado;
        var digito = new Array(10);
        dv_informado = elementos[i].value.substr(9, 2); 
        for (icpf=0; icpf<=8; icpf++) {
          digito[icpf] = elementos[i].value.substr(icpf, 1);
        }
        posicao = 10;
        soma = 0;
        for (icpf=0; icpf<=8; icpf++) {
          soma = soma + digito[icpf] * posicao;
          posicao = posicao - 1;
        }
        digito[9] = soma % 11;
        if (digito[9] < 2) {
          digito[9] = 0;
        }
        else{
          digito[9] = 11 - digito[9];
        }
        posicao = 11;
        soma = 0;
        for (icpf=0; icpf<=9; icpf++) {
          soma = soma + digito[icpf] * posicao;
          posicao = posicao - 1;
        }
        digito[10] = soma % 11;
        if (digito[10] < 2) {
          digito[10] = 0;
        }
        else {
          digito[10] = 11 - digito[10];
        }
        dv = digito[9] * 10 + digito[10];
        if (dv != dv_informado) {
          alert('O CPF informado é inválido!');
          if (elementos[i].value!="") {
	        elementos[i].select();
		  } 
		  else {
			elementos[i].focus();	
		  }
          return false;
        } 		  
	  }
    }
  }
  return true;
}

// segurança da senha
function Security(val, tamanho) {
 	
	document.getElementById('mensagem').innerHTML = "";
 	document.getElementById('d_baixa').style.background = 'white';
 	document.getElementById('d_media').style.background = 'white';
 	document.getElementById('d_alta').style.background = 'white';
 
	if( val.length >= tamanho && val.search(/[a-z]/) != -1 && val.search(/[A-Z]/) != -1 && val.search(/[0-9]/) != -1 
		||val.length >= tamanho && val.search(/[a-z]/) != -1 && val.search(/[A-Z]/) != -1 && val.search(/[@!#$%&*+=?|-]/) 
		||val.length >= tamanho && val.search(/[a-z]/) != -1 && val.search(/[@!#$%&*+=?|-]/) != -1 && val.search(/[0-9]/) 
		||val.length >= tamanho  && val.search(/[@!#$%&*+=?|-]/) != -1 && val.search(/[A-Z]/) != -1 && val.search(/[0-9]/) )
		{
				document.getElementById('mensagem').innerHTML = "SENHA FORTE";
  				document.getElementById('d_baixa').style.background = 'green';
 				document.getElementById('d_media').style.background = 'green';
 				document.getElementById('d_alta').style.background = 'green';
  		
  	} 
  	else{
  		if( val.length >= tamanho && val.search(/[a-z]/) != -1 && val.search(/[A-Z]/) != -1 
  			||val.length >= tamanho && val.search(/[a-z]/) != -1 && val.search(/[0-9]/) != -1 
  			||val.length >= tamanho && val.search(/[a-z]/) != -1 && val.search(/[@!#$%&*+=?|-]/) != -1
				||val.length >= tamanho && val.search(/[A-Z]/) != -1 && val.search(/[0-9]/) != -1
				||val.length >= tamanho && val.search(/[A-Z]/) != -1 && val.search(/[@!#$%&*+=?|-]/) != -1
				||val.length >= tamanho && val.search(/[0-9]/) != -1 && val.search(/[@!#$%&*+=?|-]/) != -1){

				document.getElementById('mensagem').innerHTML = "SENHA MÉDIA";
 				document.getElementById('d_baixa').style.background = 'yellow';
 				document.getElementById('d_media').style.background = 'yellow';
 				document.getElementById('d_alta').style.background = 'white';
  				
  			} 
  			else {
  				if(val.length >= tamanho)
  				{
	  				document.getElementById('mensagem').innerHTML = "SENHA FRACA";
  					document.getElementById('d_baixa').style.background = 'red';
 						document.getElementById('d_media').style.background = 'white';
 						document.getElementById('d_alta').style.background = 'white';
  					
  				}
  		}
  	}
}
