Indica.controller.cadastroindicador = {

	EMAIL_STATUS_BUSCANDO: 'emailbuscando',
	EMAIL_STATUS_EXISTENTE: 'emailexistente',
	EMAIL_STATUS_NAOEXISTE: 'emailnaoexiste',
	CPF_STATUS_BUSCANDO: 'cpfbuscando',
	CPF_STATUS_EXISTENTE: 'cpfexistente',
	CPF_STATUS_NAOEXISTE: 'cpfnaoexiste',
	statusEmail: '',
	statusCpf: '',

	index : function()
	{
		var that = this;

		NOIX.validation.registerTags();
		
		NOIX.get( 'cpf' ).applyMask( 'cpf' );
		NOIX.get( 'cep' ).applyMask( 'cep' );
		NOIX.get( 'dtNascDia' ).applyMask( 'number' );
		NOIX.get( 'dtNascMes' ).applyMask( 'number' );
		NOIX.get( 'dtNascAno' ).applyMask( 'number' );

		NOIX.get( 'cadastrar' ).on( 'click', function(){
			Indica.controller.cadastroindicador.submit();
		});
	},
	autotab: function(current,to)
	{
		if(current.getAttribute && current.value.length==current.getAttribute("maxlength")) 
		{
			to.focus();
		}
	},
	submit: function(){
		var validou = NOIX.validation.process(
			function(){
				Indica.messages.appMessage( '', this.getError().message + ' ' + this.value, 1 );
			}
		);

		if( !validou ){
			return false;
		}
		var sexoMasculino = NOIX.get( 'sexoM' );
		var sexoFeminino = NOIX.get( 'sexoF' );

		if( !sexoMasculino.checked && !sexoFeminino.checked ){
			Indica.messages.appMessage( '', "Informe o sexo", 1 );
			return false;
		}

		if( !validou ){
			return false;
		}
		
		var campoDia = NOIX.get( "dtNascDia" ).value;
		var campoMes = NOIX.get( "dtNascMes" ).value;
		var campoAno = NOIX.get( "dtNascAno" ).value;

		if( !Indica.data.verificaDataNascimento( campoDia, campoMes, campoAno ) ){
			Indica.messages.appMessage( '', 'Data inválida' );
			return false;
		}
		
		var campoEmail = NOIX.get( 'emailIndicado' ).value;
		var campoEmailVerif = NOIX.get( 'confEmailIndicado' ).value;
		
		if( campoEmail != campoEmailVerif ){
			Indica.messages.appMessage( '', "E-mail de confirmação inválido.", 1 );
			return false;
		}
		
		var campoSenha = NOIX.get( 'senhaIndicador' ).value;
		var campoSenhaVerif = NOIX.get( 'senhaValida' ).value;

		if( campoSenha.length >= 6 ){
			if( campoSenha != campoSenhaVerif ){
				Indica.messages.appMessage( '', "Senhas digitadas não coincidem.", 1 );
				return false;
			}
		}
		else {
			Indica.messages.appMessage( '', "A senha deve ter pelo menos 6 dígitos", 1 );
			return false;
		}

		if( Indica.controller.cadastroindicador.statusEmail == Indica.controller.cadastroindicador.EMAIL_STATUS_EXISTENTE ){
			Indica.messages.appMessage( '', 'O email informado já existe no nosso sistema. Por favor, informe outro.' );
			return false;
		}

		if( Indica.controller.cadastroindicador.statusCpf == Indica.controller.cadastroindicador.CPF_STATUS_EXISTENTE ){
			Indica.messages.appMessage( '', 'O CPF informado já existe no nosso sistema.' );
			return false;
		}

		var objSelect = NOIX.get( "select_como_conheceu" );

		if( objSelect.options[ objSelect.selectedIndex ].getAttribute( 'comp' ) == '1' ){
			var txt = NOIX.get( 'como_conheceu_mais' ).value;
			if( txt == 'Informe qual' || txt == '' ){
				Indica.messages.appMessage( '', 'Informe onde conheceu o Indica' );
				return false;
			}
		}
		
		var campoHidCodSeguranca = NOIX.get( 'codHidSeguranca' ).value;
		var campoCodSeguranca = NOIX.get( 'codSeguranca' ).value;
		
		if(campoHidCodSeguranca != campoCodSeguranca){
			Indica.messages.appMessage( '', 'Código de segurança inválido' );
			return false;
		}

		if( NOIX.get( 'leuTermo' ).checked == false ) {
			Indica.messages.appMessage( '', "Você precisa aceitar os termos do Indica para continuar.", 1 );
			return false;
		}

		this.cadastrarIndicador();
	},
	
    atualizaCidadeSelect: function( idEstado )
	{
        if ( idEstado != '' ) {
            var url = Excelsior.siteUrl + '/cadastroindicador/cidade';

            jQuery.ajax({
                type: 'POST',

                data: {
                    _ajax: 1,
                    idEstado: idEstado
                },

                url: url,

                complete: function( data ){
                    eval( "response = " + data.responseText );
                    NOIX.get( 'cidade' ).clear();
					NOIX.get( 'cidade' ).append( 'selecione', '' );
                    NOIX.get( 'cidade' ).appendJson( response );
                }
            });
        } else {
            NOIX.get( 'cidade' ).append( 'selecione', '' );
        }
    },

	validaEmail: function()
	{
		jQuery.ajax(
			{
				url: Indica.siteUrl + '/cadastroindicador/verificaemail',

				data: {
					email: NOIX.get( 'emailIndicado' ).value
				},

				beforeSend: function(){
					Indica.controller.cadastroindicador.statusEmail = Indica.controller.cadastroindicador.EMAIL_STATUS_BUSCANDO;
					NOIX.get( 'informacao_email' ).innerHTML = 'Verificando email...';
				},

				complete: function( data ){
					eval( 'var response = ' + data.responseText );

					if( response.status == 'success' ){
						Indica.controller.cadastroindicador.statusEmail = Indica.controller.cadastroindicador.EMAIL_STATUS_NAOEXISTE;
						NOIX.get('informacao_email').innerHTML = '';
					}
					else{
						Indica.controller.cadastroindicador.statusEmail = Indica.controller.cadastroindicador.EMAIL_STATUS_EXISTENTE;
						NOIX.get('informacao_email').innerHTML = response.message;
					}
				},

				type: 'POST'
			}
		);
	},

	validaCpf: function()
	{
		jQuery.ajax(
			{
				url: Indica.siteUrl + '/cadastroindicador/verificacpf',

				data: {
					cpf: NOIX.get( 'cpf' ).value
				},

				beforeSend: function(){
					Indica.controller.cadastroindicador.statusCpf = Indica.controller.cadastroindicador.CPF_STATUS_BUSCANDO;
					NOIX.get( 'informacao_cpf' ).innerHTML = 'Verificando cpf...';
				},

				complete: function( data ){
					eval( 'var response = ' + data.responseText );

					if( response.status == 'success' ){
						Indica.controller.cadastroindicador.statusCpf = Indica.controller.cadastroindicador.CPF_STATUS_NAOEXISTE;
						NOIX.get('informacao_cpf').innerHTML = '';
					}
					else{
						Indica.controller.cadastroindicador.statusCpf = Indica.controller.cadastroindicador.CPF_STATUS_EXISTENTE;
						NOIX.get('informacao_cpf').innerHTML = response.message;
					}
				},

				type: 'POST'
			}
		);
	},

	cadastrarIndicador : function()
	{
		var d = {
			nome : NOIX.get( 'nome' ).value,
			sexo : NOIX.get('sexoM').checked ? NOIX.get('sexoM').value : NOIX.get('sexoF').value,
			dtNascDia : NOIX.get( 'dtNascDia' ).value ,
			dtNascMes : NOIX.get( 'dtNascMes' ).value ,
			dtNascAno : NOIX.get( 'dtNascAno' ).value ,
			cpf : NOIX.get( 'cpf' ).value ,
			estado : NOIX.get( 'estado' ).value ,
			cidade : NOIX.get( 'cidade' ).value ,
			cep : NOIX.get( 'cep' ).value ,
			emailIndicador : NOIX.get( 'emailIndicado' ).value ,
			senhaIndicador : NOIX.get( 'senhaIndicador' ).value ,
			senhaValida:  NOIX.get( 'senhaValida' ).value ,
			idTipo : NOIX.get( 'idTipo' ).value,
			id_como_conheceu: NOIX.get( 'select_como_conheceu' ).value,
			complemento_como_conheceu: NOIX.get( 'como_conheceu_mais' ).value
		};
		
		if( NOIX.get( 'vid' ) && NOIX.get( 'indid' ) ){
			d['vid'] = NOIX.get( 'vid' ).value;
			d['indid'] = NOIX.get( 'indid' ).value;
			d['idcont'] = NOIX.get( 'idcont' ).value;
			d['tipo'] = NOIX.get( 'idTipo' ).value;
		}
		
		jQuery.ajax({
			url : Indica.siteUrl + '/cadastroindicador/cadastrar',
			
			type : 'POST',
			
			data : d,
			
			complete : function( data )
			{
				var response;
				eval( 'var response = ' + data.responseText );
				
				if( response.status == 'success'){
					Indica.messages.appMessage('Cadastro de Indicador', response.message, 1);
					window.location.href = Excelsior.siteUrl + response.redirect;
				}
 				else{
					Indica.messages.appMessage( 'Cadastro de Indicador', response.message, 1 );
				}
			}
		});
	},

	mudaComoConheceu: function(){
		var objSelect = NOIX.get( 'select_como_conheceu' );
		var select = objSelect.value;
		var temcomplemento = objSelect.options[ objSelect.selectedIndex ].getAttribute( 'comp' );

		if( temcomplemento == '1' ){
			NOIX.get( 'conheceu_div' ).style.display = "block";
			NOIX.get( 'como_conheceu_mais' ).disabled = '';
			NOIX.get( 'como_conheceu_mais' ).value = 'Informe qual';

			NOIX.get( 'como_conheceu_mais' ).on( 'focus', function(){
				if( this.value == 'Informe qual' ){
					this.value = '';
				}
			} )
		}
		else{
			NOIX.get( 'conheceu_div' ).style.display = "none";
			NOIX.get( 'como_conheceu_mais' ).disabled = 'disabled';
		}
	}

}
