var Login = function() {

    var handleLogin = function() {

        $('.login-form').validate({
            errorElement: 'span', //default input error message container
            errorClass: 'help-block', // default input error message class
            focusInvalid: false, // do not focus the last invalid input
            rules: {
                username: {
                    required: true
                },
                password: {
                    required: true
                },
                remember: {
                    required: false
                }
            },

            messages: {
                username: {
                    required: "Username is required."
                },
                password: {
                    required: "Password is required."
                }
            },

            invalidHandler: function(event, validator) { //display error alert on form submit
                $('.alert-danger', $('.login-form')).show();
            },

            highlight: function(element) { // hightlight error inputs
                $(element)
                    .closest('.form-group').addClass('has-error'); // set error class to the control group
            },

            success: function(label) {
                label.closest('.form-group').removeClass('has-error');
                label.remove();
            },

            errorPlacement: function(error, element) {
                error.insertAfter(element.closest('.input-icon'));
            },

            submitHandler: function(form) {
                form.submit(); // form validation success, call ajax form submit
            }
        });

        $('.login-form input').keypress(function(e) {
            if (e.which == 13) {
                if ($('.login-form').validate().form()) {
                    $('.login-form').submit(); //form validation success, call ajax form submit
                }
                return false;
            }
        });
    };
    $.validator.addMethod("pwcheck",
    function(value, element) {
       return /^[A-Za-z0-9\d=!\-@._*]+$/.test(value);
    });
    var handleForgetPassword = function() {
        $('.forget-form').validate({
            errorElement: 'span', //default input error message container
            errorClass: 'help-block', // default input error message class
            focusInvalid: false, // do not focus the last invalid input
            ignore: "",
            rules: {
                email: {
                    required: true,
                    email: true
                },
                password: {
                    required: true,
                    minlength: 8,
                    pwcheck: true,
                }
            },

            messages: {
                email: {
                    required: "El Em."
                }
            },

            invalidHandler: function(event, validator) { //display error alert on form submit

            },

            highlight: function(element) { // hightlight error inputs
                $(element)
                    .closest('.form-group').addClass('has-error'); // set error class to the control group
            },

            success: function(label) {
                label.closest('.form-group').removeClass('has-error');
                label.remove();
            },

            errorPlacement: function(error, element) {
                error.insertAfter(element.closest('.input-icon'));
            },

            submitHandler: function(form) {
                form.submit();
            }
        });

        $('.forget-form input').keypress(function(e) {
            if (e.which == 13) {
                if ($('.forget-form').validate().form()) {
                    $('.forget-form').submit();
                }
                return false;
            }
        });

        jQuery('#forget-password').click(function() {
            jQuery('.login-form').hide();
            jQuery('.forget-form').show();
        });

        jQuery('#back-btn').click(function() {
            jQuery('.login-form').show();
            jQuery('.forget-form').hide();

        });

    }

    var handleRegister = function() {

        function format(state) {
            if (!state.id) return state.text; // optgroup
            return "<img class='flag' src='../../assets/global/img/flags/" + state.id.toLowerCase() + ".png'/>&nbsp;&nbsp;" + state.text;
        }

        if (jQuery().select2) {
	        $("#select2_sample4").select2({
	            placeholder: '<i class="fa fa-map-marker"></i>&nbsp;Select a Country',
	            allowClear: true,
	            formatResult: format,
	            formatSelection: format,
	            escapeMarkup: function(m) {
	                return m;
	            }
	        });



	            $('.register-form').validate().element($(this)); //revalidate the chosen dropdown value and show error or success message for the input
	        $('#select2_sample4').change(function() {});
    	}

        $('.register-form').validate({
            errorElement: 'span', //default input error message container
            errorClass: 'help-block', // default input error message class
            focusInvalid: false, // do not focus the last invalid input
            ignore: "",
            rules: {

                reg_nombre: {
                    required: true
                },
                usuario_apellido: {
                    required: true
                },
                fk_pais_id: {
                    required: true
                },
                fk_ciudad_id: {
                    required: true
                },
                cliente_direccion: {
                    required: true
                },
                usuario_mail: {
                    required: true,
                    email: true
                },
                usuario_password: {
                    required: true
                },
                rusuario_password: {
                    equalTo: "#register_password"
                },
                cliente_nombre: {
                    required: true
                },
                cliente_razonsocial: {
                    required: true
                },
                cliente_ciudadempresa: {
                    required: true
                },
                cliente_direccionfiscal: {
                    required: true
                },
                fk_condicioniva_id: {
                    required: true
                },
                cuit: {
                    required: true
                },
                cliente_emailempresa: {
                    required: true,
                    email: true
                },

                tnc: {
                    required: true
                }
            },

            messages: { // custom messages for radio buttons and checkboxes
                reg_nombre: {
                    required: "Este campo es obligatorio."
                },
                usuario_apellido: {
                    required: "Este campo es obligatorio."
                },
                fk_pais_id: {
                    required: "Este campo es obligatorio."
                },
                fk_ciudad_id: {
                    required: "Este campo es obligatorio."
                },
                cliente_direccion: {
                    required: "Este campo es obligatorio."
                },
                usuario_mail: {
                    required: "Este campo es obligatorio.",
                    email: "Introducir un correo válido."
                },
                usuario_password: {
                    required: "Este campo es obligatorio."
                },
                rusuario_password: {
                    equalTo: "Las contraseñas no coinciden."
                },
                cliente_nombre: {
                    required: "Este campo es obligatorio."
                },
                cliente_razonsocial: {
                    required: "Este campo es obligatorio."
                },
                cliente_ciudadempresa: {
                    required: "Este campo es obligatorio."
                },
                cliente_direccionfiscal: {
                    required: "Este campo es obligatorio."
                },
                fk_condicioniva_id: {
                    required: "Este campo es obligatorio."
                },
                cuit: {
                    required: "Este campo es obligatorio."
                },
                cliente_emailempresa: {
                    required: "Este campo es obligatorio.",
                    email: "Introducir un correo válido."
                },

                tnc: {
                    required: "Please accept TNC first."
                }
            },

            invalidHandler: function(event, validator) { //display error alert on form submit

            },

            highlight: function(element) { // hightlight error inputs
                $(element)
                    .closest('.form-group').addClass('has-error'); // set error class to the control group
            },

            success: function(label) {
                label.closest('.form-group').removeClass('has-error');
                label.remove();
            },

            errorPlacement: function(error, element) {
                if (element.attr("name") == "tnc") { // insert checkbox errors after the container
                    error.insertAfter($('#register_tnc_error'));
                } else if (element.closest('.input-icon').size() === 1) {
                    error.insertAfter(element.closest('.input-icon'));
                } else {
                    error.insertAfter(element);
                }
            },

            submitHandler: function(form) {
                form.submit();
                alert("La solicitud ha sido enviada correctamente.");
            }
        });

        $('.register-form input').keypress(function(e) {
            if (e.which == 13) {
                if ($('.register-form').validate().form()) {
                    $('.register-form').submit();
                }
                return false;
            }
        });
        $(document).on('click','#solicitar-btn',function(){
          $('.errorsoli').html('');
      		var data = "email=" + $('input[name=usuario_mail]').val();
          console.log(data);
      			$.ajax({
      				method: "POST",
      				url: "/main/controlmail",
      				data: data
      			}).done(function( msg ) {
              console.log('1');
              console.log(msg);
              switch (msg){
                case '1':
                  $('.errorsoli').html('Ya existe un usuario con ese email.');
                  break;
                case '2':
                  $('.errorsoli').html('Usted ya tiene una solicitud en proceso.');
                  break;
                case '3':
                  $('.login-form').hide();
                  $('.register-form').show();
                  $('input[name=usuario_mail]').val($('input[name=usuario_mail]').val());
                  break;
                default:
                  $('.errorsoli').html('Debe completar el campo email.');
                  break;
              }
      			});
      	});

        $(document).on('submit','.formvalidation',function(e){
      		//e.preventDefault();
      		var errores = 0;
      		var mensaje = '';

      		$(this).find('.validate').each(function(){
      			var rules = $(this).data('rules');
      			var nombre = $(this).data('name');
      			console.log(nombre);
      			if(rules!='' && rules!=undefined){
      				var res = rules.split("|");

      				for (index = 0; index < res.length; ++index) {
      				   console.log(res[index]);
      					if(res[index]=='required'){
      						if($(this).val()=='' || $(this).val()==0){
      							errores = 1;
      							//$(this).parent().parent().addClass('has-error');
      							mensaje = mensaje + "\n El campo " + nombre + " es obligatorio";
      						}
      					}
      				    if(res[index]=='cuit'){
      				    	var valorcuit = $(this).val();
      				    	if(validaCuit(valorcuit)){
      				    	}else{
      				    		errores = 1;
      							//$(this).parent().parent().addClass('has-error');
      							mensaje = mensaje + "\n El campo " + nombre + " no tiene el formato correcto.";
      				    	}
      				    }
      						if(res[index]=='mailunique'){
      							var emailvalue = $('input[name=pasajero_email_enviar]').val();
      				      var idpax = $('input[name=pasajero_id]').val();
      				      $.ajax({
      				        url : '/configuracion/rup/mailrepetido',
      				        async : false,
      				        type : 'post',
      				        data : 'email='+emailvalue+'&idpax='+idpax,
      				        success : function(data){
      				           if (data == "false"){
      				             errores = 1;
      				             mensaje = mensaje + "\n El mail se encuentra repetido.";
      				           }
      				        }
      				      });
      						}
      				}
      			}
      		});
      		if(errores == 1){
      			alert(mensaje);
      			return 1==0;
      		}else{
      			//$(this).submit();
      		}
      	});



        jQuery('#register-back-btn').click(function() {
            jQuery('.login-form').show();
            jQuery('.register-form').hide();
        });
    }

    return {
        //main function to initiate the module
        init: function() {

            handleLogin();
            handleForgetPassword();
            handleRegister();

        }

    };

}();

function solicitaacceso(){
  $('.errorsoli').html('');
  var data = "email=" + $('input[name=usuario_mail]').val();
  console.log(data);
    $.ajax({
      method: "POST",
      url: "/main/controlmail",
      data: data
    }).done(function( msg ) {
      console.log('1');
      console.log(msg);
      switch (msg){
        case '1':
          $('.errorsoli').html('Ya existe un usuario con ese email.');
          break;
        case '2':
          $('.errorsoli').html('Usted ya tiene una solicitud en proceso.');
          break;
        case '3':
          $('.login-form').hide();
          $('.register-form').show();
          $('input[name=usuario_mail]').val($('input[name=usuario_mail]').val());
          break;
        default:
          $('.errorsoli').html('Debe completar el campo email.');
          break;
      }
    });
}
