$(document).ready(function(){
    profind_login.init();
    profind_registro.init();
    
    profind_recuperar_password.init();    
    profind_cambiar_password.init();
});

profind_login = {
    init: function() {
        var enviar_login = function() {
            var form = $("#entrarForm");
            form.find(":submit").attr("disabled", true);        
            form.find(":submit").addClass('btn-striped');
            $('#entrarForm .resultado').children().remove();
            $.ajax({
                url: form.attr('action'),
                dataType: 'json',
                type: 'POST',
                data : form.serialize()+'&ajax=login-form',
                success: function(data, textStatus, XMLHttpRequest) {
                    form.find(":submit").removeClass('btn-striped');
                    form.find(":submit").attr("disabled", false);
                    if (data.status == '200') {
                        window.location.href = data.redirect;
                    }
                    else {
                        if (data != null && typeof data == 'object') {
                            $.each(data, function(key, value){
                                jQuery('<label/>', {
                                    text: value
                                }).addClass('error').appendTo('#entrarForm .resultado');
                            }); 
                        }
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    form.find(":submit").removeClass('btn-striped');
                    form.find(":submit").attr("disabled", false);
                    jQuery('<label/>', {
                        text: 'Error de comunicación con el servidor'
                    }).addClass('error').appendTo('#entrarForm .resultado');
                }
            });
            return false;							
        };
                
        $("#entrarForm").validate({
            onfocusout: false,
            onkeyup: false,
            onclick: false,
            rules:{
                FormularioLogin_email:{
                    required:true,
                    email: true
                },
                FormularioLogin_password:{
                    required:true
                }
            },
            messages:{
                FormularioLogin_email:{
                    required:"Introduzca su e-mail",
                    email:"Indique un e-mail válido"
                },
                FormularioLogin_password:{
                    required:"Indique su contraseña"
                }
            },
            errorClass: "error help-inline",
            errorElement: "span",
            highlight:function(element, errorClass, validClass) {
                $(element).parents('.control-group').addClass('error');
            },
            unhighlight: function(element, errorClass, validClass) {
                $(element).parents('.control-group').removeClass('error');
            },
            submitHandler: enviar_login
        });				
    }
};

profind_registro = {
    init: function() {

        var enviar_registro = function() {
            var form = $("#registroForm");
            form.find(":submit").attr("disabled", true);
            form.find(":submit").addClass('btn-striped');
            $('#registroForm .resultado').children().remove();
            $.ajax({
                url: form.attr('action'),
                dataType: 'json',
                type: 'POST',
                data : form.serialize()+'&ajax=registro-form',
                success: function(data, textStatus, XMLHttpRequest) {
                    form.find(":submit").removeClass('btn-striped');
                    form.find(":submit").attr("disabled", false);
                    if (data.status == '200') {
                        form.clearForm();
                        $('#msj_info .modal-header h3').text(data.titulo);
                        $('#msj_info .modal-body p').text(data.texto);
                        $('#msj_info').modal('show');
                    }
                    else {
                        if (data != null && typeof data == 'object') {
                            $.each(data, function(key, value){
                                jQuery('<label/>', {
                                    text: value
                                }).addClass('error').appendTo('#registroForm .resultado');
                            }); 
                        }
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    form.find(":submit").removeClass('btn-striped');
                    form.find(":submit").attr("disabled", false);
                    jQuery('<label/>', {
                        text: 'Error de comunicación con el servidor'
                    }).addClass('error').appendTo('#registroForm .resultado');
                }
            });
            return false;							
        };
                
        $("#registroForm").validate({
            onfocusout: false,
            onkeyup: false,
            onclick: false,
            rules:{
                FormularioRegistro_email:{
                    required:true,
                    email: true
                },
                FormularioRegistro_password:{
                    required:true,
                    minlength: 6
                },
                FormularioRegistro_password2:{
                    required:true,
                    minlength: 6,
                    equalTo: "#FormularioRegistro_password"
                },
                FormularioRegistro_acepto:{
                    required:true
                }
            },
            messages:{
                FormularioRegistro_email:{
                    required:"Introduzca su e-mail",
                    email:"Indique un e-mail válido"
                },
                FormularioRegistro_password:{
                    required:"Indique una nueva contraseña",
                    minlength:"La contraseña debe al menos 6 caracteres"
                },
                FormularioRegistro_password2:{
                    required:"Introduzca otra vez la contraseña",
                    minlength:"La contraseña debe al menos 6 caracteres",
                    equalTo:"La confirmación de contraseña no coincide"
                },
                FormularioRegistro_acepto:""
            },
            errorClass: "error help-inline",
            errorElement: "span",
            highlight:function(element, errorClass, validClass) {
                $(element).parents('.control-group').addClass('error');
            },
            unhighlight: function(element, errorClass, validClass) {
                $(element).parents('.control-group').removeClass('error');
            },
            submitHandler: enviar_registro
        });
    }
};

profind_recuperar_password = {
    init: function() {
        $('a#solicitar_password').click(function(){
            $('#FormularioRecuperar_email').val($('#FormularioLogin_email').val());
            $('#msj_recuperar').modal('show');
        });
        
        $('#msj_recuperar .btn-primary').click(function(){
            $("#recuperarForm").submit();
        });
        
        var recuperar_password = function() {            
            var form = $("#recuperarForm");
            $('#msj_recuperar .btn-primary').addClass('btn-striped');
			$('#msj_recuperar .btn-primary').attr("disabled", true);
            $('#msj_recuperar .resultado').children().remove();
            $.ajax({
                url: form.attr('action'),
                dataType: 'json',
                type: 'POST',
                data : form.serialize()+'&ajax=recuperar-form',
                success: function(data, textStatus, XMLHttpRequest) {
                    $('#msj_recuperar .btn-primary').removeClass('btn-striped');
					$('#msj_recuperar .btn-primary').attr("disabled", false);
                    if (data.status == '200') {
                        form.clearForm();
                        $('#msj_recuperar').modal('hide');
                        
                        $('#msj_info .modal-header h3').text(data.titulo);
                        $('#msj_info .modal-body p').text(data.texto);
                        $('#msj_info').modal('show');
                    }
                    else {
                        if (data != null && typeof data == 'object') {
                            $.each(data, function(key, value){
                                jQuery('<label/>', {
                                    text: value
                                }).addClass('error').appendTo('#msj_recuperar .resultado');
                            }); 
                        }
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    $('#msj_recuperar .btn-primary').removeClass('btn-striped');
					$('#msj_recuperar .btn-primary').attr("disabled", false);
                    jQuery('<label/>', {
                        text: 'Error de comunicación con el servidor'
                    }).addClass('error').appendTo('#msj_recuperar .resultado');
                }
            });
            return false;							
        };
                
        $("#recuperarForm").validate({
            onfocusout: false,
            onkeyup: false,
            onclick: false,
            rules:{
                FormularioRecuperar_email:{
                    required:true,
                    email: true
                }
            },
            messages:{
                FormularioRecuperar_email:{
                    required:"Introduzca su e-mail en PROFIND",
                    email:"Indique un e-mail válido"
                }
            },
            errorClass: "error help-inline",
            errorElement: "span",
            highlight:function(element, errorClass, validClass) {
                $(element).parents('.control-group').addClass('error');
            },
            unhighlight: function(element, errorClass, validClass) {
                $(element).parents('.control-group').removeClass('error');
            },
            submitHandler: recuperar_password
        });				
    }        
};

profind_cambiar_password = {
    init: function() {
        $('#msj_cambiarpassword .btn-primary').click(function(){
            $("#cambiarPasswordForm").submit();
        });
        
        var cambiar_password = function() {            
            var form = $("#cambiarPasswordForm");
            $('#msj_cambiarpassword .btn-primary').addClass('btn-striped');
			$('#msj_cambiarpassword .btn-primary').attr("disabled", true);
            $('#msj_cambiarpassword .resultado').children().remove();
            $.ajax({
                url: form.attr('action'),
                dataType: 'json',
                type: 'POST',
                data : form.serialize()+'&ajax=cambiar-password-form-ext',
                success: function(data, textStatus, XMLHttpRequest) {
                    $('#msj_cambiarpassword .btn-primary').removeClass('btn-striped');
					$('#msj_cambiarpassword .btn-primary').attr("disabled", false);
                    if (data.status == '200') {
                        form.clearForm();
                        $('#msj_cambiarpassword').modal('hide');
                        
                        $('#msj_info .modal-header h3').text(data.titulo);
                        $('#msj_info .modal-body p').text(data.texto);
                        $('#msj_info').modal('show');
                    }
                    else {
                        if (data != null && typeof data == 'object') {
                            $.each(data, function(key, value){
                                jQuery('<label/>', {
                                    text: value
                                }).addClass('error').appendTo('#msj_cambiarpassword .resultado');
                            }); 
                        }
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    $('#msj_cambiarpassword .btn-primary').removeClass('btn-striped');
					$('#msj_cambiarpassword .btn-primary').attr("disabled", false);
                    jQuery('<label/>', {
                        text: 'Error de comunicación con el servidor'
                    }).addClass('error').appendTo('#msj_cambiarpassword .resultado');
                }
            });
            return false;							
        };
                
        $("#cambiarPasswordForm").validate({
            onfocusout: false,
            onkeyup: false,
            onclick: false,
            rules:{
                FormularioCambiarPassword_password:{
                    required:true,
                    minlength: 6
                },
                FormularioCambiarPassword_password_repetida:{
                    required:true,
                    minlength: 6,
                    equalTo: "#FormularioCambiarPassword_password"
                },
            },
            messages:{
                FormularioCambiarPassword_password:{
                    required:"Indique una nueva contraseña",
                    minlength:"La contraseña debe al menos 6 caracteres"
                },
                FormularioCambiarPassword_password_repetida:{
                    required:"Introduzca otra vez la contraseña",
                    minlength:"La contraseña debe al menos 6 caracteres",
                    equalTo:"La confirmación de contraseña no coincide"
                },
            },
            errorClass: "error help-inline",
            errorElement: "span",
            highlight:function(element, errorClass, validClass) {
                $(element).parents('.control-group').addClass('error');
            },
            unhighlight: function(element, errorClass, validClass) {
                $(element).parents('.control-group').removeClass('error');
            },
            submitHandler: cambiar_password
        });				
    }        
};


$.fn.clearForm = function() {
    return this.each(function() {
        var type = this.type, tag = this.tagName.toLowerCase();
        if (tag == 'form')
            return $(':input',this).clearForm();
        if (type == 'text' || type == 'password' || tag == 'textarea')
            this.value = '';
        else if (type == 'checkbox' || type == 'radio')
            this.checked = false;
        else if (tag == 'select')
            this.selectedIndex = -1;
    });
};

