﻿	// --- DOJO ---			
	dojo.require("dojo.lfx.*");
	dojo.require("dojo.io.*");
	
	dojo.addOnLoad(carrega_cidades);	
	
	function carrega_cidades(){
		
		
		document.getElementById('div_lista_cidades').innerHTML = "Carregando cidades...";
		
		uf_id = document.frm_comitente_pf.select_uf.value;
		//se o empreendimento tiver um bairro cadastrado será trazido no formulário-----
		var cidade_atual = ""
		//if (document.frm_cad_valores.hd_bairro_atual.value != ""){
		if(dojo.byId('hd_cidade_atual')){	
			cidade_atual = document.frm_comitente_pf.hd_cidade_atual.value;
		}
		//alert();
		//return false;
		//------------------------------------------------------------------------------	
		dojo.io.bind({
			url: "../div/d_cidade.cfm",
			method: "POST",
			encoding: "utf-8",
			content : {
				uf_id : uf_id,
				cidade_atual : cidade_atual
			},	
			load: function(type, evaldObj){
				document.getElementById('div_lista_cidades').innerHTML = evaldObj;
			}    
		});
		
		
		//return false;
	}

	function valida_form(){
						
		if(document.getElementById('hd_cpf_cadastrado').value==""){
			if(document.getElementById('txt_cpf').value==""){
				alert('Favor informar o CPF!');
				document.getElementById('txt_cpf').focus();
				return false;
			}else{
				if(isCpf(document.getElementById('txt_cpf').value)==false){
					alert('CPF invalido!');
					document.getElementById('txt_cpf').focus();
					return false;
				}else{
					verifica_cpf_cadastrado();		
									
					if(document.getElementById('hd_cpf_cadastrado').value=="true"){
						alert('Este CPF ja foi cadastrado!');
						document.getElementById('txt_cpf').focus();
						dojo.byId('hd_cpf_cadastrado').value = "";
						return false;
					}
				}
			}
		}
		
		if(document.getElementById('txt_nome').value==""){
			alert('Favor informar o Nome!');
			document.getElementById('txt_nome').focus();
			return false;
		}else if(document.getElementById('txt_rg').value==""){
			alert('Favor informar o RG!');
			document.getElementById('txt_rg').focus();
			return false;
		}else if(document.getElementById('txt_data_nascimento').value==""){
			alert('Favor informar a Data de Nascimento!');
			document.getElementById('txt_data_nascimento').focus();
			return false;
		}else if(document.getElementById('txt_orgao_emissor').value==""){
			alert('Favor informar o Orgao Emissor!');
			document.getElementById('txt_orgao_emissor').focus();
			return false;
		}else if(document.getElementById('select_uf_carteira').value==""){
			alert('Favor informar o Estado onde foi emitida!');
			document.getElementById('select_uf_carteira').focus();
			return false;
		}else if(document.getElementById('txt_data_emissao').value==""){
			alert('Favor informar a Data de Emissao!');
			document.getElementById('txt_data_emissao').focus();
			return false;
		}else if(document.getElementById('select_sexo').value==""){
			alert('Favor informar o Sexo!');
			document.getElementById('select_sexo').focus();
			return false;
		}else if(document.getElementById('select_estado_civil').value==""){
			alert('Favor informar o Estado Civil!');
			document.getElementById('select_estado_civil').focus();
			return false;
		}else if(document.getElementById('select_profissao').value==""){
			alert('Favor informar a Profissao!');
			document.getElementById('select_profissao').focus();
			return false;
		}else if(document.getElementById('txt_telefone_1').value==""){
			alert('Favor informar o Telefone!');
			document.getElementById('txt_telefone_1').focus();
			return false;
		}else if(document.getElementById('txt_cep').value==""){
			alert('Favor informar o CEP!');
			document.getElementById('txt_cep').focus();
			return false;
		}else if(document.getElementById('select_uf').value==""){
			alert('Favor informar o Estado!');
			document.getElementById('select_uf').focus();
			return false;
		}else if(document.getElementById('select_cidade').value==""){
			alert('Favor informar o Municipio!');
			document.getElementById('select_cidade').focus();
			return false;
		}else if(document.getElementById('txt_bairro').value==""){
			alert('Favor informar o Bairro!');
			document.getElementById('txt_bairro').focus();
			return false;
		}else if(document.getElementById('txt_logradouro').value==""){
			alert('Favor informar o Endereco!');
			document.getElementById('txt_logradouro').focus();
			return false;
		}else if(document.getElementById('txt_senha').value==""){
			alert('Preencha a Senha do Usuario!');
			document.getElementById('txt_senha').focus();
			return false;
		}else if(document.getElementById('txt_confirmar_senha').value==""){
			alert('Preencha a Confirmacao da Senha do Usuario!');
			document.getElementById('txt_confirmar_senha').focus();
			return false;
		}else if(document.getElementById('txt_confirmar_senha').value!=document.getElementById('txt_senha').value){
			alert('A Senha Nao Foi Confirmada Corretamente!');
			document.getElementById('txt_confirmar_senha').focus();
			return false;
		}
		
				
		return true;
	}
	
	function gravar() {	
	
			dojo.io.bind({
		    url: "../act/a_comitente_pf.cfm",
		    method: "POST",
			encoding: "utf-8",
			content : {	
				acao : '1',
				txt_cpf : dojo.byId('txt_cpf').value,
				txt_nome : dojo.byId('txt_nome').value,
				txt_rg : dojo.byId('txt_rg').value,
				txt_data_nascimento : dojo.byId('txt_data_nascimento').value,
				txt_orgao_emissor : dojo.byId('txt_orgao_emissor').value,
				select_uf_carteira : dojo.byId('select_uf_carteira').value,
				txt_data_emissao : dojo.byId('txt_data_emissao').value,
				select_sexo : dojo.byId('select_sexo').value,
				select_estado_civil : dojo.byId('select_estado_civil').value,
				select_profissao : dojo.byId('select_profissao').value,
				txt_email : dojo.byId('txt_email').value,
				txt_telefone_1 : dojo.byId('txt_telefone_1').value,
				txt_telefone_2 : dojo.byId('txt_telefone_2').value,
				txt_cep : dojo.byId('txt_cep').value,
				select_uf : dojo.byId('select_uf').value,
				select_cidade : dojo.byId('select_cidade').value,
				txt_bairro : dojo.byId('txt_bairro').value,
				txt_logradouro : dojo.byId('txt_logradouro').value,
				txt_complemento : dojo.byId('txt_complemento').value,
				txt_senha : dojo.byId('txt_senha').value,
				hd_cpf_cadastrado : dojo.byId('hd_cpf_cadastrado').value
			},				    
		    load: function(type, evaldObj){
		    	var retornado = trim(evaldObj.toString());
		    	if (retornado == 0){
		    		document.location.href="p_comitente_erro.cfm";
		    	} else {
		    		document.location.href="p_comitente_finalizado.cfm?id="+retornado;
		    	}
		    }
		});	
		//limpa_form();
		
		//setTimeout(esmaecerMensagem(),10000);
		
	}
	
	function verifica_cpf_cadastrado(){		
		
		dojo.io.bind({
		    url: "../div/d_verifica_cpf.cfm",
		    method: "POST",
			encoding: "utf-8",
			preventCache: true,
			sync: true,
			content : {
				cpf : dojo.byId('txt_cpf').value
			},				    
		    load: function(type, data){				
				
				var retornado = data.split(",");				
				var valor = data.search(/true/i);				
				
				if(valor==-1){					
					dojo.byId('hd_cpf_cadastrado').value = false;
				}else{
					dojo.byId('hd_cpf_cadastrado').value = true;
				}
				
		    }
		});
		
		return false;	
	}
	
	function validar(){				
		
		if(document.getElementById('login').value==""){
			alert('Favor informar o CPF ou CNPJ!');
			document.getElementById('login').focus();
			return false;
		}else if(document.getElementById('senha').value==""){
			alert('Favor informar a Senha!');
			document.getElementById('senha').focus();
			return false;
		}		
		
		verifica_usuario();
		
		//Limpa campos
		document.getElementById('login').value="";
		document.getElementById('senha').value="";
	}
	
	function verifica_usuario(){		
		
		dojo.io.bind({
		    url: "../div/d_verifica_usuario.cfm",
		    method: "POST",
			encoding: "utf-8",
			preventCache: true,
			sync: true,
			content : {
				login : dojo.byId('login').value,
				senha : dojo.byId('senha').value
			},				    
		    load: function(type, data){				
				
				var retornado = data.split(",");				
				var valor = data.search(/true/i);		
				
				if(valor==-1){					
					document.getElementById('msgRetorno').innerHTML = "<br />Usuario nao cadastrado!";
				}else{
					if(retornado[1]!="")
						document.location.href="p_comitente_pf_alterar.cfm";
					else
						document.location.href="p_comitente_pj_alterar.cfm";
				}
				
		    }
		});
		
		return false;	
	}


function trim(str){
	return str.replace(/^\s*/, "").replace(/\s*$/, "");
}
	
/**
 * @author Márcio d'Ávila
 * @version 1.01, 2004
 *
 * PROTÓTIPOS:
 * método String.lpad(int pSize, char pCharPad)
 * método String.trim()
 *
 * String unformatNumber(String pNum)
 * String formatCpfCnpj(String pCpfCnpj, boolean pUseSepar, boolean pIsCnpj)
 * String dvCpfCnpj(String pEfetivo, boolean pIsCnpj)
 * boolean isCpf(String pCpf)
 * boolean isCnpj(String pCnpj)
 * boolean isCpfCnpj(String pCpfCnpj)
 */


NUM_DIGITOS_CPF  = 11;
NUM_DIGITOS_CNPJ = 14;
NUM_DGT_CNPJ_BASE = 8;


/**
 * Adiciona método lpad() à classe String.
 * Preenche a String à esquerda com o caractere fornecido,
 * até que ela atinja o tamanho especificado.
 */
String.prototype.lpad = function(pSize, pCharPad)
{
	var str = this;
	var dif = pSize - str.length;
	var ch = String(pCharPad).charAt(0);
	for (; dif>0; dif--) str = ch + str;
	return (str);
} //String.lpad


/**
 * Adiciona método trim() à classe String.
 * Elimina brancos no início e fim da String.
 */
String.prototype.trim = function()
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
} //String.trim



/**
 * Elimina caracteres de formatação e zeros à esquerda da string
 * de número fornecida.
 * @param String pNum
 * 	String de número fornecida para ser desformatada.
 * @return String de número desformatada.
 */
function unformatNumber(pNum)
{
	return String(pNum).replace(/\D/g, "").replace(/^0+/, "");
} //unformatNumber


/**
 * Formata a string fornecida como CNPJ ou CPF, adicionando zeros
 * à esquerda se necessário e caracteres separadores, conforme solicitado.
 * @param String pCpfCnpj
 * 	String fornecida para ser formatada.
 * @param boolean pUseSepar
 * 	Indica se devem ser usados caracteres separadores (. - /).
 * @param boolean pIsCnpj
 * 	Indica se a string fornecida é um CNPJ.
 * 	Caso contrário, é CPF. Default = false (CPF).
 * @return String de CPF ou CNPJ devidamente formatada.
 */
function formatCpfCnpj(pCpfCnpj, pUseSepar, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	if (pUseSepar==null) pUseSepar = true;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var numero = unformatNumber(pCpfCnpj);

	numero = numero.lpad(maxDigitos, '0');
	if (!pUseSepar) return numero;

	if (pIsCnpj)
	{
		reCnpj = /(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/;
		numero = numero.replace(reCnpj, "$1.$2.$3/$4-$5");
	}
	else
	{
		reCpf  = /(\d{3})(\d{3})(\d{3})(\d{2})$/;
		numero = numero.replace(reCpf, "$1.$2.$3-$4");
	}
	return numero;
} //formatCpfCnpj


/**
 * Calcula os 2 dígitos verificadores para o número-efetivo pEfetivo de
 * CNPJ (12 dígitos) ou CPF (9 dígitos) fornecido. pIsCnpj é booleano e
 * informa se o número-efetivo fornecido é CNPJ (default = false).
 * @param String pEfetivo
 * 	String do número-efetivo (SEM dígitos verificadores) de CNPJ ou CPF.
 * @param boolean pIsCnpj
 * 	Indica se a string fornecida é de um CNPJ.
 * 	Caso contrário, é CPF. Default = false (CPF).
 * @return String com os dois dígitos verificadores.
 */
function dvCpfCnpj(pEfetivo, pIsCnpj)
{
	if (pIsCnpj==null) pIsCnpj = false;
	var i, j, k, soma, dv;
	var cicloPeso = pIsCnpj? NUM_DGT_CNPJ_BASE: NUM_DIGITOS_CPF;
	var maxDigitos = pIsCnpj? NUM_DIGITOS_CNPJ: NUM_DIGITOS_CPF;
	var calculado = formatCpfCnpj(pEfetivo, false, pIsCnpj);
	calculado = calculado.substring(2, maxDigitos);
	var result = "";

	for (j = 1; j <= 2; j++)
	{
		k = 2;
		soma = 0;
		for (i = calculado.length-1; i >= 0; i--)
		{
			soma += (calculado.charAt(i) - '0') * k;
			k = (k-1) % cicloPeso + 2;
		}
		dv = 11 - soma % 11;
		if (dv > 9) dv = 0;
		calculado += dv;
		result += dv
	}

	return result;
} //dvCpfCnpj


/**
 * Testa se a String pCpf fornecida é um CPF válido.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCpf
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF válido.
 */
function isCpf(pCpf)
{
	var numero = formatCpfCnpj(pCpf, false, false);
	var base = numero.substring(0, numero.length - 2);
	var digitos = dvCpfCnpj(base, false);
	var algUnico, i;

	// Valida dígitos verificadores
	if (numero != base + digitos) return false;

	/* Não serão considerados válidos os seguintes CPF:
	 * 000.000.000-00, 111.111.111-11, 222.222.222-22, 333.333.333-33, 444.444.444-44,
	 * 555.555.555-55, 666.666.666-66, 777.777.777-77, 888.888.888-88, 999.999.999-99.
	 */
	algUnico = true;
	for (i=1; i<NUM_DIGITOS_CPF; i++)
	{
		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));
	}
	return (!algUnico);
} //isCpf


/**
 * Testa se a String pCnpj fornecida é um CNPJ válido.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCnpj
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CNPJ válido.
 */
function isCnpj(pCnpj)
{
	var numero = formatCpfCnpj(pCnpj, false, true);
	var base = numero.substring(0, NUM_DGT_CNPJ_BASE);
	var ordem = numero.substring(NUM_DGT_CNPJ_BASE, 12);
	var digitos = dvCpfCnpj(base + ordem, true);
	var algUnico;

	// Valida dígitos verificadores
	if (numero != base + ordem + digitos) return false;

	/* Não serão considerados válidos os CNPJ com os seguintes números BÁSICOS:
	 * 11.111.111, 22.222.222, 33.333.333, 44.444.444, 55.555.555,
	 * 66.666.666, 77.777.777, 88.888.888, 99.999.999.
	 */
	algUnico = numero.charAt(0) != '0';
	for (i=1; i<NUM_DGT_CNPJ_BASE; i++)
	{
		algUnico = algUnico && (numero.charAt(i-1) == numero.charAt(i));
	}
	if (algUnico) return false;

	/* Não será considerado válido CNPJ com número de ORDEM igual a 0000.
	 * Não será considerado válido CNPJ com número de ORDEM maior do que 0300
	 * e com as três primeiras posições do número BÁSICO com 000 (zeros).
	 * Esta crítica não será feita quando o no BÁSICO do CNPJ for igual a 00.000.000.
	 */
	if (ordem == "0000") return false;
	return (base == "00000000"
		|| parseInt(ordem, 10) <= 300 || base.substring(0, 3) != "000");
} //isCnpj


/**
 * Testa se a String pCpfCnpj fornecida é um CPF ou CNPJ válido.
 * Se a String tiver uma quantidade de dígitos igual ou inferior
 * a 11, valida como CPF. Se for maior que 11, valida como CNPJ.
 * Qualquer formatação que não seja algarismos é desconsiderada.
 * @param String pCpfCnpj
 * 	String fornecida para ser testada.
 * @return <code>true</code> se a String fornecida for um CPF ou CNPJ válido.
 */
function isCpfCnpj(pCpfCnpj)
{
	var numero = pCpfCnpj.replace(/\D/g, "");
	if (numero.length > NUM_DIGITOS_CPF)
		return isCnpj(pCpfCnpj)
	else
		return isCpf(pCpfCnpj);
} //isCpfCnpj


//Validação com expressões regulares
function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function datas(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/(\d{2})(\d)/,"$1/$2") //Coloca uma barra entre o segundo e o terceiro dígitos
    v=v.replace(/(\d{2})(\d)/,"$1/$2") //Coloca uma barra entre o quinto e o sexto dígitos
    return v
}

function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/\D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}

function site(v){
    //Esse sem comentarios para que você entenda sozinho ;-)
    v=v.replace(/^http:\/\/?/,"")
    dominio=v
    caminho=""
    if(v.indexOf("/")>-1)
        dominio=v.split("/")[0]
        caminho=v.replace(/[^\/]*/,"")
    dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
    caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    caminho=caminho.replace(/([\?&])=/,"$1")
    if(caminho!="")dominio=dominio.replace(/\.+$/,"")
    v="http://"+dominio+caminho
    return v
}
