/**************************************************************
 *  Verifica se o campo especificado tem somente números.     *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          str: texto para fazer a verificação               *
 *                                                            *
 **************************************************************/

function somente_digitos(str)
{
    var i;
	if (str.length == 0) return false;

    for (i=0; i < str.length; i++)
	{
	  s = str.substring(i, i+1);
	  if (('0' > s) || ('9' < s)) return false;
	}

	return true;
}

/**************************************************************
 *  Verifica se o usuario digitou algo no campo especificado. *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *                                                            *
 **************************************************************/

function verificar_campo(campo, nome){
	if (campo.value.length == 0)
	{
		alert('O campo ' + nome + ' deve ser especificado.');
		campo.focus();
		return false;
	}

	return true;
}

/**************************************************************
 *  Verifica se o campo especificado tem um número especifi-  *
 *  do de caracteres.                                         *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *          len  : número de caracteres                       *
 *                                                            *
 **************************************************************/

function verificar_tamanho(campo, nome, len)
{
	if (campo.value.length != len)
	{
		alert('O campo ' + nome + ' deve ter ' + len + ' caracteres.');
		campo.focus();
		return false;
	}

	return true;
}


/**************************************************************
 *  Verifica se o campo especificado tem somente digitos.     *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *                                                            *
 **************************************************************/

function verificar_digitos(campo, nome)
{
	if (campo.value.length == 0)
	{
		alert('O campo ' + nome + ' deve ter ' + len + ' caracteres.');
		campo.focus();
		return false;
	}

	if (!somente_digitos(campo.value))
	{
		alert('O campo ' + nome + ' deve ter somente dígitos.');
		campo.focus();
		return false;
	}

	return true;
}


/**************************************************************
 *  Verifica se o campo especificado tem somente digitos.     *
 *  (Usado na listagem dos produtos)                          *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo   : nome do campo no código                 *
 *          nome    : nome do campo na página                 *
 *          checkbox: nome do campo na página do checkbox     *
 *                                                            *
 **************************************************************/

function verificar_quantidade(campo, nome, checkbox)
{
    if (!checkbox.checked) return true;
 
	if (!somente_digitos(campo.value))
	{
		alert('O campo ' + nome + ' deve ter somente dígitos.');
		campo.focus();
		return false;
	}

	return true;
}


/**************************************************************
 *  Verifica se o campo especificado tem um email válido      *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *                                                            *
 **************************************************************/

function verificar_email(campo, nome)
{
	if (campo.value.length == 0)
	{
		alert('O campo ' + nome + ' deve ser especificado.');
		campo.focus();
		return false;
	}

	if (campo.value.indexOf('@')+1 == 0)
	{
		alert('O campo ' + nome + ' deve conter um email válido.');
		campo.focus();
		return false;
	}

    i = campo.value.indexOf('@')+1;
	if ((i == '1') || (i == campo.value.length))
	{
		alert('O campo ' + nome + ' deve conter um email válido.');
		campo.focus();
		return false;
	}

	return true;
}


/**************************************************************
 *  Verifica se o campo especificado tem um cep válido.       *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *                                                            *
 **************************************************************/

function verificar_cep(campo, nome)
{
    var i, i1, i2;

	if (campo.value.length != 8)
	{
		alert('O campo ' + nome + ' deve ter 8 números.');
		campo.focus();
		return false;
	}

	if (!somente_digitos(campo.value))
	{
		alert('O campo ' + nome + ' deve conter somente digitos.');
		campo.focus();
		return false;
	}

	return true;
}


/**************************************************************
 *  Verifica se a senha foi digitada corretamente.            *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo : nome do campo no código da senha          *
 *          campo1: nome do campo no código da senha1         *
 *          tamanhoMinimo: tamanho mínimo da senha            *
 *                                                            *
 **************************************************************/

function verificar_senha(campo, campo1, tamanhoMinimo)
{
	if (campo.value.length == 0)
	{
		alert('O campo senha deve ser especificado.');
		campo.focus();
		return false;
	}
	if (campo.value.length < tamanhoMinimo)
	{
		alert('O campo senha deve ter, no mínimo, ' + tamanhoMinimo + ' caracteres.');
		campo.focus();
		return false;
	}

    if (campo1.value.length == 0)
	{
		alert('O campo confirmar senha deve ser especificado.');
		campo1.focus();
		return false;
	}

    if (campo.value != campo1.value)
	{
		alert('As senhas não são iguais. Tente novamente.');
		campo1.focus();
		return false;
	}

 	return true;
}



/**************************************************************
 *  Verifica se a data é válida.                              *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *                                                            *
 **************************************************************/

function verificar_data(campo, nome)
{
	if (campo.value.length != 10)
	{
		alert('O campo ' + nome + ' não é uma data válida. O formato deve ser dd/mm/yyyy.');
		campo.focus();
		return false;
	}

    if (campo.value.indexOf('/')+1 != 3)
	{
		alert('O campo ' + nome + ' não é uma data válida. O formato deve ser dd/mm/yyyy.');
		campo.focus();
		return false;
	}

    s = campo.value.substring(campo.value.indexOf('/')+1, campo.value.length);
    if (s.indexOf('/')+1 != 3)
	{
		alert('O campo ' + nome + ' não é uma data válida. O formato deve ser dd/mm/yyyy.');
		campo.focus();
		return false;
	}
	
	if (!somente_digitos(campo.value.substring(0,2)) || !somente_digitos(campo.value.substring(3,5)) || !somente_digitos(campo.value.substring(6,10)))
	{
		alert('O campo ' + nome + ' não é uma data válida. O formato deve ser dd/mm/yyyy.');
		campo.focus();
		return false;
	}
	
	if (campo.value.substring(0,2) > 31 || campo.value.substring(0,2) == 0 || campo.value.substring(3,5) == 0 || campo.value.substring(3,5) > 12 || campo.value.substring(6,10) == 0)
	{
		alert('O campo ' + nome + ' não é uma data válida. O formato deve ser dd/mm/yyyy.');
		campo.focus();
		return false;
	}

	return true;
}


/**************************************************************
 *  Verifica se o cpf é válido.                               *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *                                                            *
 **************************************************************/

function verificar_cpf(campo) {
    //var f = document.form;
    //cpf1 = rcpf1 + rcpf2;
    cpf1 = campo.value;
    cpf2 = "";
    //controle = rcpf2;
    if(campo.value.length != 11) 
    { 
    alert("CPF Inválido.");
    campo.focus();
    campo.select();
    return false;
    }

  /*
   *  Bug no algoritmo do CPF. Se digitar um CPF com todos os
   *  digitos iguais, ele é considerado errado.
   */
  var d, iguais, n;
  
  d = cpf1.substring(0,1);
  iguais = true;
  for (n=0; n<11; n++)
  {
    if (cpf1.substring(n, n+1) != d)
    {
    	iguais = false;
    	break;
    }
  }

  if (iguais)
  {
  	alert('Erro: Dígito verificador não confere.')
	campo.focus;
        campo.select();
	return false;
  }
  
  /*  Validação normal do CPF  */

	controle = campo.value.charAt( 9 ) + campo.value.charAt( 10 );
	contini = 10;
    for (j=1; j<=2; j++) {
       	soma = 0;
        i = 1;
       	while (i < contini) {
            soma = soma + (parseInt(cpf1.substring(i-1,i))*(contini+1-i));
       	    i++;
        }
       	digito=(soma*10)%11;
        if (digito==10) digito = 0;
       	cpf2 = cpf2 + digito;
        contini++;
    }
    if (controle == cpf2) {
       	return true;
    }
    else  {
       	alert("Erro: Dígito verificador não confere.");
        campo.focus();
        campo.select();
        return false;
    }
}


/**************************************************************
 *  Verifica se o CNPJ é válido.                               *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *                                                            *
 **************************************************************/

function verificar_cnpj(campo, nome)
{
  var CGC = campo.value;

  if (!verificar_tamanho(campo, nome, 14)) return false;
  if (!verificar_digitos(campo, nome)) return false;

  var multiplo,verificador,a, b = ""; 
  var i,j,d,resu = 0;

  a = CGC.substring(0,12);
  b = CGC.substring(12,15);
  multiplo = "543298765432";
  verificador = "";
  for (j=1; j<3; j++)
  {
  	resu = 0;
  	for ( i=0; i<12; i++ )
  	{
  		resu += eval( a.charAt(i) )* eval( multiplo.charAt(i) );
	}
	if( j == 2 ) { resu += (2 * d); }

	d = ((resu*10) % 11);
	if( d == 10 ){ d = 0; }
	verificador = verificador + d;
	multiplo = "654329876543";
  }
  if(verificador != b)
  {
  	alert('CNPJ inválido.')
	campo.focus;
        campo.select();
	return false;
  }

   return true;
}

/**************************************************************
 *  Verifica se o campo especificado tem um desconto válido,  *
 *  ou seja, entre 0 e 100 e com duas casas decimais.         *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *                                                            *
 **************************************************************/

function verificar_desconto(campo, nome)
{
	if (campo.value.length == 0)
	{
		alert('O campo ' + nome + ' deve ser especificado.');
		campo.focus();
		return false;
	}

	if (campo.value.indexOf('.')+1 > 0)
	{
		alert('O campo ' + nome + ' deve conter apenas virgulas.');
		campo.focus();
		return false;
	}

	if (campo.value.indexOf(',')+1 > 0)
	{
		i = campo.value.indexOf(',')+1;
		if ((i == '1') || (i == campo.value.length))
		{
			alert('O campo ' + nome + ' deve conter um valor válido.');
			campo.focus();
			return false;
		}

	        a = campo.value.indexOf(',');
		b = campo.value.length;
		inteiro = campo.value.substring(0,a);
        	decimal = campo.value.substring(a+1,b);

		if (!somente_digitos(inteiro))
		{
			alert('O campo ' + nome + ' deve conter somente digitos.');
			campo.focus();
			return false;
		}

	        if (!somente_digitos(decimal))
		{
			alert('O campo ' + nome + ' deve conter somente digitos.');
			campo.focus();
			return false;
		}

                if (decimal.length > 2)
		{
			alert('O campo ' + nome + ' deve conter somente duas casas decimais.');
			campo.focus();
			return false;
		}                

  	        if ( (!((0 <= inteiro) && (inteiro <= 99) && (decimal > 0))) && (!((0 <= inteiro) && (inteiro <= 100) && (decimal == 0))))
		{
		    alert('O valor do campo ' + nome + ' deve estar entre 0 e 100.');
		    campo.focus();
		    return false;
		}
	
} else {
	
		if (!somente_digitos(campo.value))
		{
			alert('O campo ' + nome + ' deve conter somente digitos.');
			campo.focus();
			return false;
		}

		if (!((0 <= campo.value) && (campo.value <= 100)))
		{
			alert('O valor do campo ' + nome + ' deve estar entre 0 e 100.');
			campo.focus();
			return false;
		}
	}

	return true;
}


/**************************************************************
 *  Verifica se o usuario selecionou uma opção inválida em um *
 *  Combo Box.                                                *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *          valor: valor da opção inválida                    *
 *                                                            *
 **************************************************************/

function verificar_combo(campo, nome, valor)
{

	if (campo.value==valor)
		{
		alert('O campo ' + nome + ' deve ser especificado.');
		campo.focus();
		return false;
		}
	
	return true;
}


/**************************************************************
 *  Verifica se o tamanho do campo especificado não excede o  *
 *  valor fornecido.                                          *
 *                                                            *
 *  Parâmetros:                                               *
 *                                                            *
 *          campo: nome do campo no código                    *
 *          nome : nome do campo na página                    *
 *          len  : número máximo de caracteres                *
 *                                                            *
 **************************************************************/

function verificar_tamanho_maximo(campo, nome, len)
{
	if (campo.value.length > len)
	{
		alert('O campo ' + nome + ' excedeu em ' + (campo.value.length - len) + ' o limite de ' + len + ' caracteres.');
		campo.focus();
		return false;
	}

	return true;
}


function verificarCepDuplo(campo1,campo2,nome) {
	if(campo1.value.length!=5) {
		alert("A primeira parte do campo " + nome + " deve ter 5 caracteres.");
		campo1.focus();
		return false;
		}
	if(!somente_digitos(campo1.value)) {
		document.formulario.cep1.focus();
		alert("O campo " + nome + " é obrigatório e deve conter apenas dígitos.");
		return false;
	}
	if(campo2.value.length!=3) {
		alert("A segunda parte do campo " + nome + " deve ter 3 caracteres.");
		campo2.focus();
		return false;
		}
	if(!somente_digitos(campo2.value)) {
		document.formulario.cep2.focus();
		alert("O campo " + nome + " é obrigatório e deve conter apenas dígitos.");
		return false;
	}
	return true;
}

		function campoNumerico(input, e) {
			var strCheck = '0123456789';
    		var whichCode = (window.Event) ? e.which : e.keyCode;
    		if (whichCode == 13){
	           return true;
    		}
    		key = String.fromCharCode(whichCode);
	    	if (strCheck.indexOf(key) == -1){
				return false;
    		}  
		}
		function campoPlaca(input, e) {
			var strCheck1 = '0123456789';
			var strCheck2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    		var whichCode = (window.Event) ? e.which : e.keyCode;
    		if (whichCode == 13){
	           return true;
    		}
    		key = String.fromCharCode(whichCode);
	    	if(input.value.length<3) {
				if (strCheck2.indexOf(key) == -1){
					return false;
    			}
			}
	    	if(input.value.length>2) {
				if (strCheck1.indexOf(key) == -1){
					return false;
    			}
			}
		}

		function FormataMoeda(input, separadorMilhar, separadorDecimal, e) {
  		var sep = 0;
        var key = '';
        var i = j = 0;
        var tamanho = tamanho2 = 0;
        var strCheck = '0123456789';
        var aux = aux2 = '';
        var whichCode = (window.Event) ? e.which : e.keyCode; 
        if (whichCode == 13){ 
           return true;
        }
        key = String.fromCharCode(whichCode);  
        if (strCheck.indexOf(key) == -1){ 
           return false;
        } 
        tamanho = input.value.length;
        for(i = 0; i < tamanho; i++){
        	if ((input.value.charAt(i) != '0') && (input.value.charAt(i) != separadorDecimal)){
        		break;
			}
		}
        aux = '';
        for(; i < tamanho; i++){
              if (strCheck.indexOf(input.value.charAt(i))!=-1){
                 aux += input.value.charAt(i);
              }
        }
        aux += key;
        tamanho = aux.length;
        if (tamanho == 0){
           input.value = '';
        }
        if (tamanho == 1){
                     	input.value = '0'+ separadorDecimal + '0' + aux;
        }
        if (tamanho == 2){
                     	input.value = '0'+ separadorDecimal + aux;
        }
        if (tamanho > 2) {
           aux2 = '';
           for (j = 0, i = tamanho - 3; i >= 0; i--){
               if (j == 3) {
                  aux2 += separadorMilhar;
                  j = 0;
               }
               aux2 += aux.charAt(i);
               j++;
           }
           input.value = '';
           tamanho2 = aux2.length;
           for (i = tamanho2 - 1; i >= 0; i--){
               input.value += aux2.charAt(i);
           }
           input.value += separadorDecimal + aux.substr(tamanho - 2, tamanho);
        }
        return false;
	}

	function verificar_data(campo,nome) {
    		var retornodata = true;
			if(campo.value.length!=10){
				retornodata = false;
			}			
			dia = campo.value.substring(0,2); 
    		mes = campo.value.substring(3,5); 
    		ano = campo.value.substring(6,10);
			if ((dia < 01)|| dia > 31 || ((dia > 30) && ( mes == 04 || mes == 06 || mes == 09 || mes == 11))){
				retornodata = false;
			} 
            if (mes < 01 || mes > 12 ) {
				retornodata = false;
			}
            if (mes == 2) {
				if(dia < 01 || dia > 29){
					retornodata = false;
				}
				if(!((ano % 4 == 0 && !(ano % 100 == 0)) || (ano % 400 == 0))){
							if(dia > 28){
								retornodata = false;
							}
						}
            }
			if((retornodata == false)){
				alert('Data inválida. Entre com um Data válida para ' + nome +'.');
				campo.value = "";
				campo.focus();
				return false;
			}
			return true; 
	}

	function ajustar_data(input){
		if ((event.keyCode<47)||(event.keyCode>57)){
			event.returnValue = false; 
		}else if(event.keyCode==47){
			if ((input.value.length==2)||(input.value.length==5)){
				event.returnValue = true;
			}else{
				event.returnValue = false;
			} 
		}else { 
			if ((input.value.length==2)||(input.value.length==5))
				input.value=input.value + "/" ;
		}
	}

	function ajustar_mes_ano(input){
		if ((event.keyCode<47)||(event.keyCode>57)){
			event.returnValue = false;
		}else if(event.keyCode==47){
			if (input.value.length==2){
				event.returnValue = true;
			}else{
				event.returnValue = false;
			}
		}else {
			if (input.value.length==2)
				input.value=input.value + "/" ;
		}
	}
	
function verificar_mes_ano(campo, nome)
{
	if (campo.value.length != 7)
	{
		alert('O campo ' + nome + ' não é válida. O formato deve ser mm/aaaa.');
		campo.focus();
		return false;
	}

    if (campo.value.indexOf('/')+1 != 3)
	{
		alert('O campo ' + nome + ' não é válido. O formato deve ser mm/aaaa.');
		campo.focus();
		return false;
	}

	if (!somente_digitos(campo.value.substring(0,2)) || !somente_digitos(campo.value.substring(3,5)))
	{
		alert('O campo ' + nome + ' não é válido. O formato deve ser mm/aaaa.');
		campo.focus();
		return false;
	}
	
	if (campo.value.substring(0,2) == 0 || campo.value.substring(0,2) > 12 || campo.value.substring(3,7) == 0)
	{
		alert('O campo ' + nome + ' não é válido. O formato deve ser mm/aaaa.');
		campo.focus();
		return false;
	}

	return true;
}
