﻿var vResultado = '';

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
	var i, p, q, nm, test, num, min, max, errors = '', args = MM_validateForm.arguments;
	for (i=0; i<(args.length-2); i+=3) { 
		test = args[i+2]; 
		val = MM_findObj(args[i]);
		if (val) { 
			nm=args[i+1];//val.name; 
			if ((val=val.value)!="") {
				if (test.indexOf('isEmail')!=-1) { 
					p=val.indexOf('@');
					if (p<1 || p==(val.length-1)) errors += '- ' + nm + ' não contem um e-mail válido.\n';
				} else if (test!='R') { 
					num = parseFloat(val);
					if (isNaN(val)) errors += '- ' + nm + ' deve ser um número.\n';
					if (test.indexOf('inRange') != -1) { 
						p=test.indexOf(':');
						min=test.substring(8,p);
						max=test.substring(p+1);
						if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
					}
				} 
			} else if (test.charAt(0) == 'R') errors += '- Preencha o campo "'+nm+'".\n'; 
		}
	} 
	if (errors) 
		alert('Erros encontrados:\n'+errors);
		
	document.MM_returnValue = (errors == '');
}

function MM_validateSelect() {
	var i, val, ind, nm, test, errors = '', args = MM_validateSelect.arguments;
	for (i=0; i<(args.length-2); i+=3) { 
		test = args[i+2]; 
		val = MM_findObj(args[i]);
		if (val) { 
			nm=args[i+1];//val.name; 
			ind = val.selectedIndex;
			if (val.options[ind].value == test) {
				errors += '- Você deve selecionar uma opção para ' + nm + '.\n';
			}
		}
	} 
	if (errors) 
		alert('Erros encontrados:\n'+errors);
		
	document.MM_returnSValue = (errors == '');
}

function ValidaFormFisica() {
	MM_validateForm(
		'txtRazaoSocial','Nome','R',
		'txtEmail','E-mail','RisEmail',
		'txtNascimento','Data de nascimento','R',
		'txtRG','RG','R',
		'txtCPF','CPF','RisNum',
		'txtDDD','DDD','RisNum',
		'txtEndereco','Endereço','R',
		'txttxtNumero','Número','R',
		'Bairro','Bairro','R',
		'txtCidade','Cidade','R',
		'txtCEP','CEP','R',
		'txtFantasia','Empresa onde Trabalha','R');
	
	//if (document.MM_returnValue)
		MM_validateSelect(
			'ddlEstadoCivil', 'Estado Civil', '0',
			'ddlUF', 'UF', '  ',
			'ddlBanco', 'Banco', '000');
			
	if (document.MM_returnValue && document.MM_returnSValue) {
		var bFone = (MM_findObj('txtFone1').value == "") && 
					(MM_findObj('txtFone2').value == "") && 
					(MM_findObj('txtCelular').value == "");
		var bCpf = !ValidaCPF(MM_findObj('txtCPF').value);
		if (bFone) {
			alert('Preencha pelo menos um dos telefones para contato');
			return false
		} else if (bCpf) {
			alert(vResultado);
			return false
		} else {
			return true;
		}
	} else {
		return false;
	}
}

function ValidaFormJuridica() {
	MM_validateForm(
		'txtRazaoSocial','Razão Social','R',
		'txtEmail','E-mail','RisEmail',
		'txtRG','RG','R',
		'txtCPF','CPF','RisNum',
		'txtDDD','DDD','RisNum',
		'txtEndereco','Endereço','R',
		'txtNumero','Número','R',
		'txtBairro','Bairro','R',
		'txtCidade','Cidade','R',
		'txtCEP','CEP','R',
		'txtAgencia','Agência','R',
		'txtFantasia','Fantasia','R',
		'txtCnpj', 'CNPJ', 'R',
		'txtIE', 'Inscrição Estadual', 'R',
		'txtContato', 'Nome do Contato', 'R',
		'txtCargo', 'Cargo', 'R'
		);
	
	//if (document.MM_returnValue)
		MM_validateSelect(
			'ddlUF', 'UF', '  ',
			'ddlBanco', 'Banco', '000');
			
	if (document.MM_returnValue && document.MM_returnSValue) {
		var bFone = (MM_findObj('txtFone1').value == "") && 
					(MM_findObj('txtFone2').value == "") && 
					(MM_findObj('txtCelular').value == "");
		var bCNPJ = !ValidaCNPJ(MM_findObj('txtCnpj').value);
		if (bFone) {
			alert('Preencha pelo menos um dos telefones para contato');
			return false
		} else if (bCNPJ) {
			alert(vResultado);
			return false
		} else {
			return true;
		}
	} else {
		return false;
	}
}

function entraData(txt, e) {
	var cod = e.charCode?((e.charCode>0)?e.charCode:e.keyCode):e.keyCode;
    /*var msg = '';
    for(A in e)
        msg+=A + '=' + e[A] + '\n';
    MM_findObj('txtMsg').value = msg;*/

	if (cod <= 57 && cod >= 48) {
		var t = txt.value.replace('/', '').replace('/', ''), tNovo = '';
		if (t.length < 8) t += String.fromCharCode(cod);
		for (i=0; i<t.length; i++) {
			tNovo += t.charAt(i);
			if (i==1 || i == 3) {
				tNovo += '/';
			}
		}
		txt.value = tNovo;
		return false;
	} else if (cod == 8 || cod == 9) {
		return true;
	} else {
		return false;
	}
}

function entraNumero(txt, e) {
	var cod = e.charCode?((e.charCode>0)?e.charCode:e.keyCode):e.keyCode;
	if ((cod <= 57 && cod >= 48) || cod == 8 || cod == 9) {
		return true;
	} else {
		return false;
	}
}

function ValidaCNPJ (cnpj) {
  /*
  - A sentença inteira deve obedecer a expressão, por isso começa com
      ^ e termina com $
  - Modelo: 000.000.000/0000-00, sendo que o primeiro numero ou é zero ou nao existe!
  - Segue tambem o algoritimo verificador de digito
  */
  
  /*
  var em = /^0?\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/;
  if (em.exec(cnpj) == null) {
    vResultado = '   O CNPJ foi digitado de maneira incorreta.\n' +
                 'Use os pontos, a barra e o traço para digitá-lo\n' +
                 '           Ex.: 99.999.999/9999-99   ';
    delete em;
    return false;
  }
  delete em;
  
  while (cnpj.match(/[\.\/-]/) != null) {
    cnpj = cnpj.replace(/[\.\/-]/, '');
  }
  */
  vResultado = vResultado + cnpj

  if (cnpj == '00000000000000') {
    vResultado = 'CNPJ Inválido! Por favor, verifique o número digitado!';
    return false;
  }
  
  if (cnpj.charAt(0) == '0' && cnpj.length == 16) {
    cnpj = cnpj.substring(1, 15);
  }
  vResultado = vResultado + cnpj

  var soma, resultado1, resultado2, digito;
  digito = new Array(14);
  
  digito[0] = cnpj.charAt(0);
  digito[1] = cnpj.charAt(1);
  digito[2] = cnpj.charAt(2);
  digito[3] = cnpj.charAt(3);
  digito[4] = cnpj.charAt(4);
  digito[5] = cnpj.charAt(5);
  digito[6] = cnpj.charAt(6);
  digito[7] = cnpj.charAt(7);
  digito[8] = cnpj.charAt(8);
  digito[9] = cnpj.charAt(9);
  digito[10] = cnpj.charAt(10);
  digito[11] = cnpj.charAt(11);
  digito[12] = cnpj.charAt(12);
  digito[13] = cnpj.charAt(13);

  soma = digito[0]*5 + digito[1]*4 + digito[2]*3 + digito[3]*2 + digito[4]*9 + digito[5]*8 + 
         digito[6]*7 + digito[7]*6 + digito[8]*5 + digito[9]*4 + digito[10]*3 + digito[11]*2;
         
  soma = soma - (11*(parseInt(soma/11)));

  if (soma == 1 || soma == 0) {
    resultado1 = 0;
  } else {
    resultado1 = 11 - soma;
  }
  
  if (resultado1 == digito[12]) {
    soma = digito[0]*6 + digito[1]*5 + digito[2]*4 + digito[3]*3 + digito[4]*2 + digito[5]*9 + 
           digito[6]*8 + digito[7]*7 + digito[8]*6 + digito[9]*5 + digito[10]*4 + digito[11]*3 + 
           digito[12]*2;
    soma = soma - (11 * (parseInt(soma/11)));
    if (soma == 1 || soma == 0) {
      resultado2 = 0;
    } else {
      resultado2 = 11 - soma;
    }
    if (resultado2 == digito[13]) {
      delete digito;
      return true;
    } else { 
      vResultado = 'CNPJ Inválido! Por favor, verifique o número digitado! ' + cnpj;
      delete digito;
      return false;
    }
  } else {
    vResultado = 'CNPJ Inválido! Por favor, verifique o número digitado!2';
    delete digito;
    return false;
  }    
}

function ValidaCPF (cpf) {
    /*
    var em = /^\d{3}\.\d{3}\.\d{3}-\d{2}$/;
    if (em.exec(cpf) == null) {
        vResultado = 'O CPF foi digitado de maneira incorreta.\n' + 
                     ' Use os pontos e o traço para digitá-lo\n' + 
                     '         Ex.: 999.999.999-99';
        delete em;
        return false;
    }
    delete em;
    */
    var soma, resultado1, resultado2, digito;
    digito = new Array(11);

    /*
    while (cpf.match(/[\.\/-]/) != null) {
        cpf = cpf.replace(/[\.\/-]/, '');
    }
    */

    if (cpf == '00000000000') {
        vResultado = 'CPF Inválido! Digite seu CFP corretamente';
        delete digito;
        return false
    } else {
        digito[0] = cpf.charAt(0);
        digito[1] = cpf.charAt(1);
        digito[2] = cpf.charAt(2);
        digito[3] = cpf.charAt(3);
        digito[4] = cpf.charAt(4);
        digito[5] = cpf.charAt(5);
        digito[6] = cpf.charAt(6);
        digito[7] = cpf.charAt(7);
        digito[8] = cpf.charAt(8);
        digito[9] = parseInt(cpf.charAt(9));
        digito[10] = parseInt(cpf.charAt(10));   
        
        soma = 10*digito[0] + 9*digito[1] + 8*digito[2] + 7*digito[3] + 6*digito[4] + 5*digito[5] + 
               4*digito[6] + 3*digito[7] + 2*digito[8];
        soma = soma -(11 * (parseInt(soma / 11)));

        if (soma == 0 || soma == 1) {
            resultado1 = 0;
        } else {
            resultado1 = 11 - soma;
        }
    
        if (resultado1 == digito[9]) {
            soma = digito[0]*11 + digito[1]*10 + digito[2]*9 + digito[3]*8 + digito[4]*7 + digito[5]*6 + 
             digito[6]*5 + digito[7]*4 + digito[8]*3 + digito[9]*2;
            soma = soma - (11 * (parseInt(soma / 11)));
    
            if (soma == 0 || soma == 1) {
                resultado2 = 0;
            } else {
                resultado2 = 11 - soma;
            }
            if (resultado2 == digito[10]) {
                delete digito;
                return true;
            } else {
                vResultado = 'CPF Inválido! Por favor, verifique o número digitado!';
                delete digito;
                return false;        
            }
        } else {
            vResultado = 'CPF Inválido! Por favor, verifique o número digitado!';
            delete digito;
            return false;
        }
    }
}




