jQuery(document).ready(function () {
    jQuery(".usuarios_grupos").change(function () {
        // Eliminamos los extras que se hayan añadido para que no la líen
        jQuery('.remove_extra').click();

        var personas = jQuery(this).val();
        if (personas == '') {
            personas = 0;
        }
        var tarifa_precio = jQuery(this).attr('data-precio');
        var total_tarifa  = personas * tarifa_precio;
        var id_tarifa     = jQuery(this).attr('data-id');
        jQuery('.Tarifa' + id_tarifa).val(personas);
        jQuery('.Total' + id_tarifa).text(total_tarifa + " €");
        var total_personas = 0;
        var total_precio   = 0;
        var nombre         = "";
        var precio_tarifa  = 0;
        var tarifas        = "";
        var persona        = 0;
        jQuery('.usuarios_grupos').each(function(index){
            id_tarifa = jQuery(this).attr('data-id');
            nombre    = jQuery(this).attr('name');
            if(jQuery(this).val() != ''){
                persona = parseInt(jQuery(this).val())
            }else{
                persona = 0;
            }
            total_personas += persona;

            if(jQuery.isNumeric(jQuery(this).attr('data-precio'))){
                precio_tarifa = jQuery(this).val()*jQuery(this).attr('data-precio');
            }else{
                precio_tarifa = 0;
            }
            total_precio   += precio_tarifa;
            
            tarifas += id_tarifa + ", "+ nombre + ", " + persona +  ", " + precio_tarifa + " : ";
        });

        jQuery("#TotalPersonas").text(parseInt(total_personas));
        jQuery("#TotalPrecio").text(total_precio + " €");

        // Asignamos a los campos ocultos
        jQuery("#LocalizadorTotal").val(total_precio);
        jQuery("#LocalizadorTotalReal").val(total_precio);
        jQuery("#LocalizadorUnidades").val(total_personas);

        jQuery("#LocalizadorTarifas").val(tarifas.substring(0, tarifas.length - 2));

        jQuery("#Num_Total").val(total_personas);
        if (total_personas > 0) {
            jQuery('#tarifausuario').val('validado');
        } else {
            jQuery('#tarifausuario').val('');
        }
        // Marcamos que ya se pueden marcar los extras
        jQuery('.enviar_extra').prop("disabled", false);

        // Comprobamos si hay plazas disponibles
        var servicio     = jQuery('#LocalizadorServicio').val();
        var sala_horario = jQuery('#LocalizadorSalaHorario').val();

        jQuery('#continuar_compra').css('display', 'block');
        jQuery('#tarifausuario2').removeClass('error');
        jQuery("label[for='tarifausuario']").remove();
    });

    jQuery("input:radio[name=pago]").click(function () {
        jQuery('#LocalizadorPago').val(jQuery.trim(jQuery(this).parent().text()));
    });

    jQuery(".usuarios_grupos").each(function (ug) {
        jQuery("#Tarifa_" + jQuery(this).data("id") ).TouchSpin({
            buttonup_txt   : '<svg version="1.1" id="Btn_Sumar_' + jQuery(this).data("id") + '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve"><rect x="14.5" y="29.5" class="st0" width="31" height="1"/><rect x="29.5" y="14.5" class="st0" width="1" height="31"/> </svg>',
            buttondown_txt : '<svg version="1.1" id="Btn_Restar_' + jQuery(this).data("id") + '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve"><rect x="14.5" y="29.5" class="st0" width="31" height="1"/></svg>',
        });
        // Aumento de unidades
        jQuery("#Tarifa_" + jQuery(this).data("id")).on("touchspin.on.stopupspin", function() {    
            if( parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).val()) >= parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).attr('data-max'))){                                    
                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().prop('disabled', true);
                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().attr('style', 'visibility:hidden');
            }
        });
        // Disminucion de unidades
        jQuery("#Tarifa_"+ jQuery(this).data("id")).on("touchspin.on.stopdownspin", function() {    
            if( parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).val()) < parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).attr('data-max'))){                        
                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().prop('disabled', false);
                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().attr('style', 'display:inline');
            }
        });
    });

    jQuery(".campo_extra").change(function () {
        var nombre_dper = "";
        var valor_dper  = "";
        var total_dper  = "";
        var type_dper   = "";
        jQuery(".campo_extra").each(function () {
            nombre_dper = jQuery(this).attr('placeholder');
            valor_dper  = jQuery(this).val();
            type_dper   = jQuery(this).prop('tagName');
            total_dper += nombre_dper + ":" + valor_dper + ":" + type_dper + ","
        });

        jQuery("#LocalizadorCamposExtra").val(total_dper.substring(0, total_dper.length - 1));

    });
});

function cargar_formulario_visitas_servicio(servicio,lang,url){

    jQuery.ajax({
        type : "POST",
        url  : ROOTGESTOR  + "ApiVisitasV2/formulario_visitas_servicio",              
        data : JSON.stringify({    
            servicio: servicio,
            idioma  : lang,
            url     : url,
            regalo  : 1

        }),
        success: function (response) {
            let data = JSON.parse(response);
    
            servicio = data.servicio.Servicio.id;
                    
            var url_api = "//" + location.host + "/wp-content/plugins/visitas/modules/visitas/reservas/modulos/reserva_web/api/formulario_visitas_regalo_ajax_api.php";
                       
            jQuery.ajax({
                type : "POST",
                url  : url_api,
                data : {
                    id_servicio            : servicio,
                    lang,
                    data_servicio          : data.servicio,  
                    info_evento            : data.info_evento,                
                    extras_evento          : data.extras_evento,          
                    idiomas                : data.idiomas,
                    idioma                 : data.idioma,
                    tarifas                : data.tarifas,
                    formulario_contacto    : data.formulario_contacto,
                    formulario_condiciones : data.formulario_condiciones,
                    tipos_pagos            : data.tipos_pagos,
                    extras_regalo_compra   : data.extras_regalo_compra,
                    campos_extras_chk      : data.campos_extras_chk,
                    fecha
                },
                cache: false,
                success : function (response) {
                    jQuery("#paso_2_all").html(response);
                    jQuery("#paso_2_all").show();

                    jQuery(".usuarios_grupos").change(function () {

                        // Comprobamos que no haya Grupos de Usuarios incompatibles
                        var tarifas_seleccionadas = '';
                        jQuery('.usuarios_grupos').each(function(index){
                            jQuery(this).prop('disabled', false);
                            if(jQuery(this).val() != '' && jQuery(this).val() != 0){
                                tarifas_seleccionadas += jQuery(this).attr('data-id') + ',';
                            }                            
                        });

                        jQuery.ajax({
                            type  : "POST",
                            url   : '//' + location.host + '/wp-content/plugins/visitas/modules/visitas/reservas/ajax/reserva_web/comprobar_grupos_incompatibles.php',
                            data  : {
                                tarifas_seleccionadas: tarifas_seleccionadas.slice(0, -1),
                            },
                            cache : false,
                            success : function (response) {
                                var respuesta   = jQuery.parseJSON(response);
                                
                                for(var i=0; i<respuesta.length; i++){
                                    jQuery('#Tarifa_' + respuesta[i]).prop('disabled', true);
                                    jQuery('#Tarifa_' + respuesta[i]).val('');
                                }
                            },			
                            beforeSend: function () {
                                // jQuery(".loader").show();
                            }
                        });
                        

                        // Eliminamos los extras que se hayan añadido para que no la líen
                        jQuery('.remove_extra').click();
                         
                        var personas = jQuery(this).val();
                        if (personas == '') {
                            personas = 0;
                        }
                        var tarifa_precio = jQuery(this).attr('data-precio');
                        var total_tarifa  = personas * tarifa_precio;
                        var id_tarifa     = jQuery(this).attr('data-id');
                        jQuery('.Tarifa' + id_tarifa).val(personas);
                        jQuery('.Total' + id_tarifa).text(total_tarifa + " €");
                        var total_personas = 0;
                        var total_precio   = 0;
                        var nombre         = "";
                        var precio_tarifa  = 0;
                        var tarifas        = "";
                        var persona        = 0;
                        jQuery('.usuarios_grupos').each(function(index){
                            id_tarifa = jQuery(this).attr('data-id');
                            nombre    = jQuery(this).attr('name');
                            if(jQuery(this).val() != ''){
                                persona = parseInt(jQuery(this).val())
                            }else{
                                persona = 0;
                            }
                            total_personas += persona;

                            if(jQuery.isNumeric(jQuery(this).attr('data-precio'))){
                                precio_tarifa = jQuery(this).val()*jQuery(this).attr('data-precio');
                            }else{
                                precio_tarifa = 0;
                            }
                            total_precio   += precio_tarifa;
                            
                            tarifas += id_tarifa + ", "+ nombre + ", " + persona +  ", " + precio_tarifa + " : ";
                        });

                        jQuery("#TotalPersonas").text(parseInt(total_personas));
                        jQuery("#TotalPrecio").text(total_precio + " €");

                        // Asignamos a los campos ocultos
                        jQuery("#LocalizadorTotal").val(total_precio);
                        jQuery("#LocalizadorTotalReal").val(total_precio);
                        jQuery("#LocalizadorUnidades").val(total_personas);

                        jQuery("#LocalizadorTarifas").val(tarifas.substring(0, tarifas.length - 2));

                        jQuery("#Num_Total").val(total_personas);
                        if (total_personas > 0) {
                            jQuery('#tarifausuario').val('validado');
                        } else {
                            jQuery('#tarifausuario').val('');
                        }
                        // Marcamos que ya se pueden marcar los extras
                        jQuery('.enviar_extra').prop("disabled", false);

                        // Comprobamos si hay plazas disponibles
                        var servicio = jQuery('#LocalizadorServicio').val();
                        var sala_horario = jQuery('#LocalizadorSalaHorario').val();

                        jQuery('#continuar_compra').css('display', 'block');
                        jQuery('#tarifausuario2').removeClass('error');
                        jQuery("label[for='tarifausuario']").remove();
                    });

                    jQuery("input:radio[name=pago]").click(function () {
                        jQuery('#LocalizadorPago').val(jQuery.trim(jQuery(this).parent().text()));
                    });

                    jQuery(".usuarios_grupos").each(function (ug) {
                        jQuery("#Tarifa_" + jQuery(this).data("id") ).TouchSpin({
                            buttonup_txt   : '<svg version="1.1" id="Btn_Sumar_' + jQuery(this).data("id") + '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve"><rect x="14.5" y="29.5" class="st0" width="31" height="1"/><rect x="29.5" y="14.5" class="st0" width="1" height="31"/> </svg>',
                            buttondown_txt : '<svg version="1.1" id="Btn_Restar_' + jQuery(this).data("id") + '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 60 60" style="enable-background:new 0 0 60 60;" xml:space="preserve"><rect x="14.5" y="29.5" class="st0" width="31" height="1"/></svg>',
                        });
                        // Aumento de unidades
                        jQuery("#Tarifa_"+ jQuery(this).data("id")).on("touchspin.on.stopupspin", function() {     
                            if( parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).val()) >= parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).attr('data-max'))){                                    
                                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().prop('disabled', true);
                                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().attr('style', 'visibility:hidden');
                            }
                        });
                        // Disminucion de unidades
                        jQuery("#Tarifa_" + jQuery(this).data("id")).on("touchspin.on.stopdownspin", function() {    
                            if( parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).val()) < parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).attr('data-max'))){                        
                                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().prop('disabled', false);
                                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().attr('style', 'display:inline');
                            }
                        });
                        jQuery("#Tarifa_"+ jQuery(this).data("id")).on("change", function() {    
                            if( parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).val()) < parseInt(jQuery("#Tarifa_" + jQuery(this).data("id")).attr('data-max'))){                        
                                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().prop('disabled', false);
                                jQuery("#Btn_Sumar_" + jQuery(this).data("id") ).parent().attr('style', 'display:inline');
                            }
                        });
                    });

                    jQuery(".campo_extra").change(function () {
                        var nombre_dper = "";
                        var valor_dper  = "";
                        var total_dper  = "";
                        var type_dper   = "";
                        jQuery(".campo_extra").each(function () {
                            nombre_dper = jQuery(this).attr('placeholder');
                            valor_dper  = jQuery(this).val();
                            type_dper   = jQuery(this).prop('tagName');
                            total_dper += nombre_dper + ":" + valor_dper + ":" + type_dper + ","
                        });

                        jQuery("#LocalizadorCamposExtra").val(total_dper.substring(0, total_dper.length - 1));

                    });

                    jQuery("#FormasPago .radio").click(function () {
                        jQuery("#FormasPago .radio").removeClass("selected");
                        jQuery(this).addClass("selected");
                        jQuery("#continuar_compra").prop("disabled", false);
                    });

                    var campos_servicio_chk      = jQuery.makeArray(data['campos_extras_chk']);
                    var campos_servicio_chk_html = 	cargarCamposExtrasCheckComun(campos_servicio_chk);
                    jQuery("#CamposServicioChk").html(campos_servicio_chk_html);

                    var campos_extras_html = "";
                    var campos_extras      = jQuery.makeArray(data['extras_regalo_compra']);                  
                    campos_extras_html     = cargaExtrasComun(campos_extras);                
                    jQuery("#mejora-tus-visitas").html(campos_extras_html);

                    /************************PROCESO DE COMPRA 02 ****************************/
                    // Compruebo que no han pasado más de 10 minutos desde que ha realizado la
                    // reserva hasta que confirma (en cuyo caso el cron la elimina). Le muestro aviso
                    var FormReserva2 = jQuery("#FormCompraRegalo");
                     FormReserva2.removeAttr("action");
                    jQuery("#btn_continuar_compra").click(function () {
                        
                        if(jQuery("#FormCompraRegalo").valid()){
                            cargar_paso_compra();
                        }

                        return false;
                    });

                    set_campos_obligatorios();
                },
    

            });

        },
        beforeSend: function () {
            // jQuery(".loader").show();
        }
    });
}

function cargar_paso_compra(){

    let extras                   = [];
    let campos_extra             = [];
    let recibir_correo           = 0;
    let descuenta_plazas_primero = 0;

    var sala_horario_id    = jQuery('#LocalizadorSalaHorario').val();
    var actividad          = jQuery('#LocalizadorActividad').val();
    var servicio           = jQuery('#LocalizadorServicio').val();
    var instalacion        = jQuery('#LocalizadorInstalacion').val();
    var web                = 1;
    var tarifas            = jQuery('#LocalizadorTarifas').val();
    var plazas             = jQuery('#LocalizadorUnidades').val();
    var idioma             = jQuery('#LocalizadorIdiomaId').val();
    var ip                 = jQuery('#ip').val();
    var idioma_nav         = jQuery('#LocalizadorIdiomaId').val(); 	
    var forma_pago         = jQuery('input[name="pago"]:checked').val();	
    var nombre      	   = jQuery('#nombre').val();	
    var email      		   = jQuery('#email').val();	
    var telefono           = jQuery('#telefono').val();	
    var apellidos          = jQuery('#apellidos').val();	
    var nombre_regalado    = jQuery('#nombre_regalado').val();	
    var email_regalado     = jQuery('#email_regalado').val();	
    var telefono_regalado  = jQuery('#telefono_regalado').val();	
    var apellidos_regalado = jQuery('#apellidos_regalado').val();	

    var texto_comprar ='Confirmar';

    try {
        texto_comprar =comprar['confirmar'];
    } catch (error) {
    
    }

    try {
        var arrayTarifas = tarifas.split(":");
        var tarifas      = [];
        var lista        = [];

        arrayTarifas.forEach((tarifa) =>{
            var dataTarifa = tarifa.split(",");
            if (dataTarifa[2].trim() > 0){
                tarifas.push(dataTarifa[0].trim());
                lista.push(dataTarifa[2].trim());
            }
        });

    } catch (error) {
    
    }

    try {
        jQuery('input[name^="campos_extra"]').each(function() {   	
    
        try {
            valor = jQuery(this).val();
        } catch (error) {
        
        }

        campos_extra.push({
            "id"    : jQuery(this).attr('data-id'),
            "valor" : valor
        });
    });

    } catch (error) {
        console.log({error});
    }
    try {
        //Extras
        jQuery('input[name^="extra"]').each(function() {   	
        valor = 0;
        try {
            valor = jQuery(this).val();
        } catch (error) {
            
        }
        if(jQuery(this).attr('data-id')){
            extras.push({
                "propiedad" : jQuery(this).attr('data-propiedad') ,
                "id"        : jQuery(this).attr('data-id') ,
                "valor"     : valor
            });
        }
        });
    } catch (error) {
        
    }

    var data_continuar_compra = {					    
        actividad,
        apellidos_regalado,
        apellidos,
        campos_extra,
        descuenta_plazas_primero,
        email_regalado,
        email,
        extra 	 	     : extras,
        forma_pago,
        idioma,
        idioma_navegador : idioma_nav,
        instalacion,
        ip,
        lista            : lista.toString(),
        nombre_regalado,
        nombre,
        plazas,
        recibir_correo,
        regalo			 : 1 ,		 
        sala_horario_id,
        servicio,
        tarifas          : tarifas.toString(),
        telefono_regalado,
        telefono,
        texto_comprar,
        web          
    };

    jQuery.ajax({
    type     : "POST",
    url      : ROOTGESTOR  + "ApiCompraV2/comprar_confirmar",     		
    data     : JSON.stringify(data_continuar_compra),
    success: function (response) {
        let data = JSON.parse(response);
    
        generar_confirmar_compra(data,data_continuar_compra);
    },			
    beforeSend: function () {
        
    }
    });

}

function generar_confirmar_compra(data_continuar,data_continuar_compra){

    var url_api = "//" + location.host + "/wp-content/plugins/visitas/modules/visitas/reservas/modulos/compra/api/confirmar_compra_regalo_api.php";
    try {
        data_continuar_compra.pago 			  = data_continuar.info_forma_pago.pago;
        data_continuar_compra.id_pedido 	  = data_continuar.info_pago.numero_operacion;
        data_continuar_compra.servicio_nombre = data_continuar.servicio_nombre;
    } catch (error) {
        
    }

    jQuery.ajax({
        type  : "POST",
        url   : url_api,
        data  : data_continuar_compra,
        cache : false,
        success: function (response) {
            jQuery("#paso_3_all").html(response);

            jQuery('#TotalPrecioConfirmar').text(data_continuar.precio_total_str);
    
            var tarifas_html = '';
            data_continuar.tarifas.map( tarifa =>{
                tarifas_html +=`
                    <tr>
                        <td>
                            <label>${tarifa.nombre_tarifa}</label>
                        </td>
                        <td>
                            <span class="num_usuarios">${tarifa.num_tarifa_carrito}</span>
                        </td>
                        <td class="casi-last">${tarifa.precio}</td>
                    </tr>`;
            });
            jQuery("#carritoConfirmar .totales").before(tarifas_html);

            try {
                var extras_html='';
                data_continuar.extras_agrupados.map( extra =>{
                    extras_html +=`
                        <tr class="extra-mejora-tabla">
                            <td>
                                <label>${extra.nombre_extra}</label>
                            </td>
                            <td>
                                <span class="num_usuarios">${extra.cantidad_extra}</span>
                            </td>
                            <td>${parseFloat(extra.total).toFixed(2)}  €</td>
                        </tr>
                    `;
                });
                jQuery("#carritoConfirmar .totales").before(extras_html);

            } catch (error) {
                
            }

            
            if (data_continuar.hay_cupon == 0){					
                jQuery('#cupones').hide();
                jQuery('#paso_3_all_confirmar .datos-reserva').attr('style', 'width: 100% !important');
            }else{
                jQuery('#cupones').show();
                jQuery('#cupones').attr('style', 'visibility: visible !important');
                jQuery('#cupon').attr('placeholder',cupones_textos["texto_3"]);
                jQuery('#validar_cupon').val(cupones_textos["texto_5"]);
            }
            
            if(data_continuar_compra.forma_pago == 2 || data_continuar_compra.forma_pago == 102 || data_continuar_compra.forma_pago == 38 || data_continuar_compra.forma_pago == 40 || data_continuar_compra.forma_pago == 41){										
                sesion_pago_api(data_continuar.info_pago);				
                jQuery('#DivPagoRedsys').html(data_continuar.info_pago.boton);
                jQuery('#DivPagoPaypal').html('');
                jQuery('#DivPagoInstalacion').html('');
                
                EstablecerValidaciones();
            }

            if(data_continuar_compra.forma_pago  == 6 ){
                sesion_pago_api(data_continuar.info_pago);				
                jQuery('#DivPagoPaypal').html(data_continuar.info_pago.boton);
                jQuery('#DivPagoRedsys').html('');
                jQuery('#DivPagoInstalacion').html('');
                jQuery('#Redsys').hide();

                EstablecerValidaciones();
            }
            if(data_continuar.info_forma_pago.pago_lugar  == 1 ){
                jQuery('#modulo_reservas').show();
                jQuery('#DivPago').hide();
            }else{
                jQuery('#DivPago').show();
                jQuery('#DivPagoInstalacion').html('');
            }
            
            jQuery('#tiempo_pago').val(data_continuar.tiempo_pago); 				
            jQuery('#localizador').val(data_continuar.localizador);
            jQuery('#TxtPagoIntalacionLocalizador').val(data_continuar.localizador);

            window.scrollTo(0,0);

            jQuery('#paso_2_all').hide();	
            jQuery('#paso_3_all').show();	
        },
    });

}

function sesion_pago_api(info_pago){
    jQuery.ajax({
        type  : 'POST',
        url   : '//' + location.host + '/wp-content/plugins/visitas/modules/visitas/reservas/ajax/comprar/sesion_pago_api.php',
        async : false,
        data  : {
            "numero_operacion" : info_pago.numero_operacion
        },
        success: function(response) {
            respuesta = jQuery.parseJSON(response);
    
        }
    });
}

function set_campos_obligatorios(){
    messages_es = {
		nombre                    : "El campo nombre es obligatorio.",
		apellidos                 : "El campo apellidos es obligatorio.",
		telefono                  : "El campo teléfono es obligatorio. Introdúzcalo en un formato válido.",
		email                     : "El campo email es obligatorio. Introdúzcalo en un formato válido. Ej. ejemplo@pruebajig.es",
		nombre_regalado           : "El campo nombre es obligatorio.",
		apellidos_regalado        : "El campo apellidos es obligatorio.",
		telefono_regalado         : "El campo teléfono es obligatorio. Introdúzcalo en un formato válido.",
		email_regalado            : "El campo email es obligatorio. Introdúzcalo en un formato válido. Ej. ejemplo@pruebajig.es",
		dni                       : "El campo dni es obligatorio. Introdúzcalo en un formato válido. Ej. 16123456A",
		condiciones_compra        : "Por favor, acepte las condiciones de compra.",
		pago                      : "Por favor, seleccione un método de pago.",
		plazas_adulto             : "Por favor, seleccione número de plazas",
		tarifausuario             : "Seleccione tarifa",
		'campos_extra_check[104]' : "Por favor, acepte las politicas de privacidad.",
	};
	messages_en = {
		nombre                    : "First name is required field.",
		apellidos                 : "Last name is required field.",
		telefono                  : "Telephone is required field. Type in a valid format. Ej. 941454050, 666555444",
		email                     : "Email is required field. Type in a valid format. Ej. ejemplo@pruebajig.es",
		nombre_regalado           : "First name is required field.",
		apellidos_regalado        : "Last name is required field.",
		telefono_regalado         : "Telephone is required field. Type in a valid format. Ej. 941454050, 666555444",
		email_regalado            : "Email is required field. Type in a valid format. Ej. ejemplo@pruebajig.es",
		dni                       : "DNI is required field. Type in a valid format. Ej. 16123456A",
		condiciones_compra        : "Please, accept purchase conditions.",
		pago                      : "Please, select a payment method.",
		plazas_adulto             : "Please, select number of vacancies",
		tarifausuario             : "Please, select a price",
        'campos_extra_check[104]' : "Please, accept the privacy policies.",
	};
	messages = "";
	switch (lang_js) {
		case "es_ES":
			messages = messages_es;
			break;
		case "en_GB":
			messages = messages_en;
			break;
		default:
			messages = messages_en;
			break;
	}
	jQuery("#FormCompraRegalo").validate({
		rules: {
			nombre: {
				required  : true,
				minlength : 2,
			},
            apellidos: {
				required  : true,
				minlength : 2,
			},
			telefono: {
				required  : true,
				minlength : 9,
				number    : true,
			},
			email: {
				required  : true,
				minlength : 6,
				email     : true,
			},
			nombre_regalado: {
				required  : true,
				minlength : 2,
			},
            apellidos_regalado: {
				required  : true,
				minlength : 2,
			},
			telefono_regalado: {
				required  : true,
				minlength : 9,
				number    : true,
			},
			email_regalado: {
				required  : true,
				minlength : 6,
				email     : true,
			},
            pago: {
				required: true,
			},
			plazas_adulto: {
				min: 1,
			},
			tarifausuario: {
				required  : true,
				minlength : 1,
			},
            condiciones_compra: {
                required: true
            },
            'campos_extra_check[104]': {
                required: true
            },      
		},
		messages: messages,
		// Algunos inputs se componen de varios campos. Estos hay que definirlos aqui ya que por defecto
		// el error se pondría en el primero de esos campos (apellido 1, primer grupo de dígitos de la cuenta
		// corriente...)
		errorPlacement: function (error, element) {
			if (element.attr("name") == "pago") {
				jQuery("#FormasPago").append(error);
			} else if (element.attr("name") == "condiciones_compra") {
				jQuery("#FormasPago").append(error);
				error.insertAfter(".recibir_correo");			
            } else if (element.attr("name") == "campos_extra_check[104]") {
                jQuery("#FormasPago").append(error);
                error.insertAfter(".recibir_correo");
            } 
            else {
				error.insertAfter(element);
			}
		},
		submitHandler: function (form) {
			// Compruebo si la tarifa es especial y en cuyo caso ha sido
			// validada
			tarifaEspecialValidada();
			// Compruebo plazas por si viene de la web
			var hora        = jQuery("#Hora").val();
			var usuarios    = jQuery("#NumeroUsuarios").val();
			var servicio    = jQuery("#idServicio").val();
			var localizador = jQuery("#Localizador").val();
			var web         = jQuery("#Web").val();
			if (hora != 0 && hora != "") {
				jQuery
					.ajax({
						type     : "POST",
						url      : "//" + location.host + "/wp-content/plugins/visitas/modules/visitas/reservas/ajax/validar_plazas_proceso.php",
						dataType : "json",
						data     : {
							hora        : hora,
							usuarios    : usuarios,
							servicio    : servicio,
							web         : web,
							localizador : localizador,
						},
						cache: false,
					})
					.done(function (json) {
						if (json == 0) {
							div               = document.getElementById("ValidarPlazas");
							div.style.display = "";
							jQuery("#ValidarPlazas").html("Lo sentimos, no quedan plazas disponibles.");
						} else {
							div               = document.getElementById("ValidarPlazas");
							div.style.display = "none";
							// Tarifa validada o no hace falta
							if (validada == true) {
								validations.localizadorValidation(jQuery(form), true);
							} else {
								div               = document.getElementById("ValidarPlazas");
								div.style.display = "";
								jQuery("#ValidarPlazas").html("Por favor, introduzca su email y contraseña correctas o seleccione otra tarifa.");
							}
						}
					});
				return false;
			} else {
				// Tarifa validada o no hace falta
				if (validada == true) {
					validations.localizadorValidation(jQuery(form), true);
				} else {
					div               = document.getElementById("ValidarPlazas");
					div.style.display = "";
					jQuery("#ValidarPlazas").html("Por favor, introduzca su email y contraseña válidos o seleccione otra tarifa.");
				}
			}
		},
	});
}

// continuar_compra