$(function () {

	$.fn.form.settings.rules.usernameExiste = function(value) {
	  	return (verificaExiste('username', value) > 0 ? false : true);
	};
	$.fn.form.settings.rules.emailExiste = function(value) {
	  	return (verificaExiste('email', value) > 0 ? false : true);
	};
    $('#frmEditar').form({
    	keyboardShortcuts: false,
    	fields: {
	      	nombres: {
		        rules: [{ type : 'empty', prompt : 'Complete este campo'}]
		    },
		    apellidos: {
		        rules: [{ type : 'empty', prompt : 'Complete este campo'}]
		    },
		    email: {
		        rules: [
		        	{ type : 'empty', prompt : 'Complete este campo'},
		        	{ type : 'emailExiste', prompt : 'Este email ya fue registrado'}
		        ]
		    },
		    username: {
		        rules: [
		        	{ type : 'empty', prompt : 'Ingrese un nombre de usuario'},
		        	{ type   : 'regExp[/^\\b[a-zA-Z0-9_]+\\b$/]', prompt : 'Ingrese un nombre de usuario sin espacios'},
		        	{ type : 'usernameExiste', prompt : 'El nombre de usuario ya existe'},
		        ]
		    },
		    dni: {
		        rules: [
		        	{ type : 'empty', prompt : 'Complete este campo'},
		        	{ type : 'integer', prompt : 'Ingrese solo números'},
		        	{ type : 'exactLength[8]', prompt : 'El dni debe tener {ruleValue} digitos'}
		        ]
		    },
		    id_rol: {
		        rules: [{ type : 'empty', prompt : 'Seleccione una opción'}]
		    },
		    id_local: {
		        rules: [{ type : 'empty', prompt : 'Seleccione una opción'}]
		    },
		    telefono: {
		        rules: [
		        	{ type : 'empty', prompt : 'Complete este campo'},
		        	{ type : 'number', prompt : 'Ingrese solo números'}
		        ]
		    },
    	},
    	inline : true,
    });

	function verificaExiste(field, param) {

     	var count;

     	$.ajax({
     		async: false,
            url: APP_URL+'/personal/existeCampoEditar',
            headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
            type: 'GET',
            dataType: 'json',
            data: { campo: field, valor: param, id_usuario: $('#id_usuario').val() },
            success: function (data) {
                count = data;
            }
        });

        return count;
	};

	$('.btn_guardar').on('click', function() {
		if ($('#frmEditar').form('is valid')) {
			$('#update_modal').modal({
  				closable: false,
		    	onApprove : function() {
		    		sendForm();
			    }
	  		}).modal('show'); 
		} else {
			$('#frmEditar').form('validate form');
		}
  	});

	function sendForm() {

	    var data = $('#frmEditar').serialize();
        $.requestApi('/personal/actualizar', data, 'POST', function (resolve) {
	        if (resolve) {
	            $.showMessages(resolve);
	        }
	    });
        
        return false;
	};

	$('#frmEditarPassword').form({
		keyboardShortcuts: false,
    	fields: {
		    new_password: {
		        rules: [{ type : 'empty', prompt : 'Complete este campo'}]
		    },
		    password: {
		        rules: [
		        	{ type : 'empty', prompt : 'Complete este campo'},
		        	{ type : 'match[new_password]', prompt : 'La contraseñas no coinciden'},
		        ]
		    },
    	},
    	inline : true,
    });

	$('.btn_guardar_password').on('click', function() {
		if ($('#frmEditarPassword').form('is valid')) {
			$('#update_modal').modal({
  				closable: false,
		    	onApprove : function() {
		    		sendFormPassword();
			    }
	  		}).modal('show'); 
		} else {
			$('#frmEditarPassword').form('validate form');
		}
  	});

    function sendFormPassword() {

	    var data = $('#frmEditarPassword').serialize();
        $.requestApi('/personal/actualizarPassword', data, 'POST', function (resolve) {
	        if (resolve) {
	            if (resolve.message === "success") {
	                $.Helper.clearFields("#frmEditarPassword");
	            }
	            $.showMessages(resolve);
	        }
	    });
        
        return false;
	};

});
