﻿function jUsuarios()
{
    //** variaveis privativas 
    var jDS;
    var jDT;
    var tpl;	
    var tplUsuario;
    var sb;	
	var usuario;
	var edicao = false;
	var continuar = true;
	var dateDataAniversario;
	var piCidadeCode, piCidadeName, piBairroCode, piBairroName;
    //** metodos privativos
    
    var render = {
        main: function(){
            return tplUsuario.tpl_mainUsuario.getHtml();			
		},	
		atualizaTituloForm:function(titulo){
			$('titulo_dinamico_usuario').innerHTML = titulo;  
		},			
    	dadosUsuario: function(){
    	    //-- Endereco Inicio
			tplUsuario.tpl_usuario.onkeypressCEP = "javascript:jsCommon.exec.formataCEP(event,this,'#####-###')";
		    tplUsuario.tpl_usuario.optionPais = jsCommon.exec.getOptionPais();
		    tplUsuario.tpl_usuario.optionEstado = jsCommon.exec.getOptionSelecione();
		    tplUsuario.tpl_usuario.optionCidade = jsCommon.exec.getOptionSelecione();
		    tplUsuario.tpl_usuario.optionBairro = jsCommon.exec.getOptionSelecione();
			return tplUsuario.tpl_usuario.getHtml();			
     	}
    }; 
	
	var mountStruct = {		
		usuarios: function(){
			var usuario = new StructType('StructUsuarios');
			usuario.codUsuario = ($get('txt_codUsuario') == "" ? 0 : parseInt($get('txt_codUsuario')));
			usuario.nomeUsuario = $get('txt_nome');
			if($('rd_sexoM').checked == true){
                usuario.sexo = $get('rd_sexoM');
            }else{
                usuario.sexo = $get('rd_sexoF');
            };
            
            usuario.estadoCivil = $get('sel_estadoCivil');
            usuario.telefoneResidencial = $get('txt_telRes');
            usuario.telefoneComercial = $get('txt_telCom');
            usuario.telefoneCelular = $get('txt_telCel');
            usuario.dataAniversario = Date.parse($('txt_DTAniversario').value, "dd/MM/yyyy");
			usuario.codEmpresa = Portlet.getCodEmpresa();
			usuario.email = $get('txt_emailUsuario');
			usuario.senha = $get('txt_senhaUsuario');
			usuario.nivelAcesso = 3; // manter hard coded... usuario empresa.
			usuario.codHotel = null;
			usuario.ativo = true;
			return usuario;
		},
		excluirUsuario: function(codUsuario){
			var excUsuario = new StructType('StructUsuarios');
			excUsuario.codUsuario = codUsuario;
			excUsuario.ativo = false;
			return excUsuario;
		}
	};
    
    //DOM node ctrlRefs
    var ctrlRefs = {
        mainConteudo: function(){return $('mainConteudo');}, //Div principal
        recuperarSenha: function(){return $('recuperar_senha');},
        divMensagens: function(){return $('divMensagens');},
        divTopoUsuario: function(){return $('divTopoUsuario'); },
        divResultadoPesquisa: function(){return $('divResultadoPesqUsuario'); },
		divRetornoResultadoPesquisa: function() { return $('divRetornoResultadoPesquisaUs'); },
        divBotoes: function() { return $('divBotoes'); },
		divNovo: function(){return $('novoUsuario');},
		txtUsuario: function(){return $('txt_usuario');},
		txtSenha: function(){return $('txt_passwd');}
    };    
    
    //tratativas de eventos da UI
    var on = {
        changePais: function(){
            $('txt_pais').onchange = function(){
                $html('divEstado', '<select class="form" id="txt_estado" />' + jsCommon.exec.getOptionSelecione() + '</select>');
                $html('divCidade', '<select class="form" id="txt_cidade" />' + jsCommon.exec.getOptionSelecione() + '</select>');
                on.changeEstado();
                $html('divBairro', '<select class="form" id="txt_bairro" />' + jsCommon.exec.getOptionSelecione() + '</select>');
                on.changeCidade();
                
                if ($get('txt_pais') != ""){
                    startEnv.addOptionsEstados(parseInt($get('txt_pais')));
                };
            };
        },
        changeEstado: function(){
            $('txt_estado').onchange = function(){
                $html('divCidade', '<select class="form" id="txt_cidade" />' + jsCommon.exec.getOptionSelecione() + '</select>');
                $html('divBairro', '<select class="form" id="txt_bairro" />' + jsCommon.exec.getOptionSelecione() + '</select>');
                on.changeCidade();
                    
                if ($get('txt_estado') != ""){   
                    startEnv.addOptionsCidades(parseInt($get('txt_estado')));
                };
            };
        },
        changeCidade: function(){
            $('txt_cidade').onchange = function(){
                $html('divBairro', '<select class="form" id="txt_bairro" />' + jsCommon.exec.getOptionSelecione() + '</select>');
                                    
                if ($get('txt_cidade') != ""){
                    startEnv.addOptionsBairros(parseInt($get('txt_cidade')));
                };
            };
        },
        selectCidade: function(value, text, row) {
            piCidadeCode = value;
            piCidadeName = text;
            $set('txt_codCidade', value);
            $set('txt_estado', row.CodEstado);
            $('txt_estado').disabled = true;
        },
        selectBairro: function(value, text, row){
            piBairroCode = value;
            piBairroName = text;
        }
    };
    
	//-- Callbacks - Retorno dos NajaMethods
    var callbacks = {
        // 
    };
	
    var startEnv = {
        main: function(){
            ctrlRefs.mainConteudo().innerHTML = render.main();
        },
        addOptionsEstados: function(pCodPais){
            var jDtEstado = new jDatatable(Estados.listarPorPais(pCodPais).value);
            var tot = jDtEstado.getTotRegs();
            for (var i = 0; i < tot; i++) {
	            option = new Option();
		        option.value = jDtEstado.getDrValue(i, "CodEstado");
		        option.text = jDtEstado.getDrValue(i, "Nome");
	            try{
                    $('txt_estado').add(option,null); // standards compliant
                }catch(ex){
                    $('txt_estado').add(option); // IE only
                };				        
            };
        },
        addOptionsCidades: function(pCodEstado){
            var jDtCidade = new jDatatable(Cidades.listarPorEstado(pCodEstado).value);
            var tot = jDtCidade.getTotRegs();
            for (var i = 0; i < tot; i++) {
	            option = new Option();
		        option.value = jDtCidade.getDrValue(i, "CodCidade");
		        option.text = jDtCidade.getDrValue(i, "Nome");
		        try{
                    $('txt_cidade').add(option,null); // standards compliant
                }catch(ex){
                    $('txt_cidade').add(option); // IE only
                };
            };
        },
        addOptionsBairros: function(pCodCidade){
            var jDtBairro = new jDatatable(Bairros.listarPorCidade(pCodCidade).value);
            var tot = jDtBairro.getTotRegs();
            for (var i = 0; i < tot; i++){
	            option = new Option();
		        option.value = jDtBairro.getDrValue(i, "CodBairro");
		        option.text = jDtBairro.getDrValue(i, "Nome");
	            try{
                    $('txt_bairro').add(option,null); // standards compliant
                }catch(ex){
                    $('txt_bairro').add(option); // IE only
                };				        
            };
        },
        calendarDataAniversario: function(){
            dateDataAniversario = new Calendar($('txt_DTAniversario'));
            dateDataAniversario.setDate(Date.now().addDays(-6570));
            dateDataAniversario.monthsToDisplay = 2;
			dateDataAniversario.init();
		},
		novoCadastro: function(){
			ctrlRefs.divNovo().innerHTML = render.dadosUsuario();		
			render.atualizaTituloForm('Novo Usuário');
		    $('codUsuario').style.display = 'none';
			edicao = false;
			
			startEnv.calendarDataAniversario();		
            on.changeCidade();
            on.changeEstado();
            on.changePais();
            $set('txt_pais', "21");
			startEnv.addOptionsEstados(21);	        
			ctrlRefs.divNovo().style.display = '';
        },
		validar: function(){
			if ($get('txt_emailUsuario').length < 5) { alert('Preencha o e-mail'); $('txt_emailUsuario').focus(); return false; };
			if ($get('txt_emailUsuarioConfir').length < 5) { alert('Preencha o e-mail'); $('txt_emailUsuarioConfir').focus(); return false; };
			if ($get('sel_nivelAcesso') == "0") { alert('Preencha o nível de acesso'); $('sel_nivelAcesso').focus(); return false; };
			if ($get('txt_emailUsuario') !=  $get('txt_emailUsuarioConfir')){alert('Email de confirmação Incorreto!'); $('txt_emailUsuarioConfir').focus(); return false; };
			if ($get('txt_senhaUsuario') !=  $get('txt_senhaUsuarioConfir')){alert('Senha de confirmação Incorreta!'); $('txt_senhaUsuarioConfir').focus(); return false; };
			if ($get('txt_senhaUsuario').length < 3) { alert('Preencha a senha'); $('txt_senhaUsuario').focus(); return false; };
			if ($get('txt_senhaUsuarioConfir').length < 3) { alert('Preencha a senha'); $('txt_senhaUsuarioConfir').focus(); return false; };

			var senha = $get('txt_senhaUsuario');
			var arraySenha = [];
			for (var i = 0; i < senha.length; i++) {
			    arraySenha.push(senha.substring(i, i + 1));
			};
			if (arraySenha.contains('&')) {
			    alert('Não é permitido o caracter & em sua senha.');
			    return false;
			};
			if (arraySenha.contains('?')) {
			    alert('Não é permitido o caracter ? em sua senha.');
			    return false;
			};
			if (arraySenha.contains('/')) {
			    alert('Não é permitido o caracter / em sua senha.');
			    return false;
			};
			if (arraySenha.contains('=')) {
			    alert('Não é permitido o caracter = em sua senha.');
			    return false;
			};
			
			if (Date.parse($('txt_DTAniversario').value, "dd/MM/yyyy") != null){
			    if (Date.parse($('txt_DTAniversario').value, "dd/MM/yyyy") == null) { alert('Preencha a Data corretamente. Formato: dia/mês/ano'); $('txt_DTAniversario').focus(); return false; };
			}
			if ($get('txt_emailUsuario').isEmail()== true){
			    return true;
			}else{
				alert('O E-mail não parece ser válido!');
				$('txt_emailUsuario').focus();
			    return false;
			};
		},		
        inserir: function(){	
             var valida = false;
             if( edicao == false){
		        var verificaEmail = UsuarioValidaEmail.validaEmailUsuario($get('txt_emailUsuario'), Portlet.getCodEmpresa());
		        valida = verificaEmail.value;
		     };
		     if (valida == false){
		 	    var res = Usuarios.inserir(mountStruct.usuarios());
		 	    var resEnd = jsEnderecos.exec.inserir(parseInt($get('txt_codEndereco')), Portlet.getCodEmpresa());
		 	    var resUsuEnd = Usuarios.inserirEndereco(res.value, resEnd.value);
		 	    if (res.error == undefined && res.value > 0) {
				    alert('Operação efetuada com sucesso!');
		 	    }else {
				    alert('Ocorreram erros durante a operação.');
		 	    };
		     }else{
		 	    alert('Email já existe');
		     };
		     edicao = false;		
		},
		login: function(){
		    if(ctrlRefs.txtUsuario().value == '' || ctrlRefs.txtSenha().value == ''){
		        alert('É necessário informar o usuário e senha para o login');
		    }else{
		        //var res = Usuarios.login(ctrlRefs.txtUsuario().value, ctrlRefs.txtSenha().value).value;
		        var res = Login.doLogin(ctrlRefs.txtUsuario().value, ctrlRefs.txtSenha().value).value;
		        if(res.rows.count() < 1){
		            alert('Usuário ou senha invalido!');
		        }else{
		            jDtUsuario = res;
//		            jEuFui.exec.main();
		            jEmpresa.exec.main();
		        }
		    }
		}
    };
    
    //** métodos publicos
    this.exec = {
		inserir: function(){
			if (startEnv.validar()){
		        startEnv.inserir();	
		    }		
		},
		novoCadastro: function(){
		    ctrlRefs.recuperarSenha().innerHTML = '';
			startEnv.novoCadastro();
		},
		pesquisar: function(){			
			startEnv.pesquisar();
		},
		login: function(){
		    startEnv.login();
		}
	};
       
     //construtor
    this.constructor = new function(){
		tplUsuario = new Template("usuario");
		tpl = new Template("Common");
		startEnv.main();		
    };
};

