function aumentar_cantidad_cesta(referencia, proveedor, linea) {
    $('.linea-cesta button').attr('disabled', true);
    var cantidadReservada = stringToFloat($("#cantidad-" + linea).data('cantidad'));    
    var cantidad = stringToFloat($("#cantidad-" + linea).val());
    uds_envase = stringToFloat($("#uds-envase-" + linea).val());
    if (uds_envase === 0) {
        uds_envase = 1;
    }
    var nueva_cantidad = cantidad + uds_envase;
    if (referenciaAnadible(referencia, cantidadReservada, nueva_cantidad, linea)) {
	    $("#cantidad-" + linea).val(nueva_cantidad);
	    recalcular_cantidad_producto(referencia, proveedor, linea);
    }
}
function disminuir_cantidad_cesta(referencia, proveedor, linea) {
    $('.linea-cesta button').attr('disabled', true);
	var cantidadReservada = stringToFloat($("#cantidad-" + linea).data('cantidad'));
    var cantidad = stringToFloat($("#cantidad-" + linea).val());
    uds_envase = stringToFloat($("#uds-envase-" + linea).val());
    if (uds_envase == 0) {
        uds_envase = 1;
    }
    var nueva_cantidad;
    if (cantidad > uds_envase) {
        nueva_cantidad = cantidad - uds_envase;
    } else {
        nueva_cantidad = uds_envase;
    }
    if (referenciaAnadible(referencia, cantidadReservada, nueva_cantidad, linea)) {
	    $("#cantidad-" + linea).val(nueva_cantidad);
	    recalcular_cantidad_producto(referencia, proveedor, linea);
    }
}
function onblurInputCantidad (input, referencia, proveedor, linea) {
    if ( stringToFloat($(input).val()) != stringToFloat($(input).data('cantidad')) ) {
        cantidad_uds_envase_cesta(referencia, proveedor, linea);
    }
}
function cantidad_uds_envase_cesta(referencia, proveedor, linea) {
	var cantidadReservada = stringToFloat($("#cantidad-" + linea).data('cantidad'));
    var cantidad = stringToFloat($("#cantidad-" + linea).val());
    var nueva_cantidad;
    uds_envase = stringToFloat($("#uds-envase-" + linea).val());
    if (uds_envase == 0) {
        uds_envase = 1;
    }
    if (cantidad > uds_envase) {
        nueva_cantidad = cantidad / uds_envase;
        nueva_cantidad = Math.ceil(nueva_cantidad);
        nueva_cantidad = nueva_cantidad * uds_envase;
    } else {
        nueva_cantidad = uds_envase;
    }
    if (referenciaAnadible(referencia, cantidadReservada, nueva_cantidad, linea)) {
	    $("#cantidad-" + linea).val(nueva_cantidad);
	    recalcular_cantidad_producto(referencia, proveedor, linea);
    } else {
    	$("#cantidad-" + linea).val(cantidadReservada);
    }
}
var tv_kits = 1;
var tv_kits_fabricar_sin_stock = 0;
var es_kit;
var fam_web_con_stock;
var sub_web_con_stock;
var ref_web_con_stock;
function cargarVariablesAnadible (referencia) {
	$.ajax({
		dataType: "json",
		type: "POST",
        url: "ControlB2C",
        async: false,
		data: { json: 1,
				id_referencia: referencia,
				id_ref_talla: 0,
				id_ref_color: 0,
				tabla: 3,
				estado: 10                
			},
		async: false,
		success: function (response) {
			es_kit = parseInt(response["es_kit"]);
			fam_web_con_stock = parseInt(response["fam_web_con_stock"]);
			sub_web_con_stock = parseInt(response["sub_web_con_stock"]);
			ref_web_con_stock = parseInt(response["ref_web_con_stock"]);
		},
		error: function (response) {
			console.log("Error AJAX");
			console.log(response);
		}
	})
}
var referenciaAnadible = function (idReferencia, cantidadReservada, nuevaCantidad, linea) {
    var respuesta = new Boolean();
    cargarVariablesAnadible(idReferencia);
    
    if (fam_web_con_stock == 0 || sub_web_con_stock == 0 || ref_web_con_stock == 0 || (tv_kits == 1 && es_kit == 1 && tv_kits_fabricar_sin_stock == 1)) {
		respuesta = true;
	} else {
		if ( (0 === 1 && 0 === 0 && 0 === 1) || (0 === 1 && 0 === 1 && 0 === 1) || (0 === 0 && 0 === 1) ) {
            var cantidadEnStock = new Number();
    
            $.ajax({
                dataType: "json",
                type: "POST",
                url: "ControlB2C",
                async: false,
                data: {
                    json: 1,
                    id_referencia: idReferencia,
                    id_ref_talla: 0,
                    id_ref_color: 0,
                    cantidad: nuevaCantidad,
                    stock_almacen: $('#cantidad-' + linea).data('almacen'),
                    tabla: 3,
                    estado: 1                    
                },
                success: function(response) {
                    var stock = stringToFloat(response.stock);
    
                    if (0 === 1) {
                        cantidadEnStock = stock + cantidadReservada;
                    } else {
                        cantidadEnStock = stock;
                    }
    
                    if (nuevaCantidad <= cantidadEnStock) {
                        respuesta = true;
                    } else {
                        $("#modal-mensaje-error").modal("show");
                        $("#modal-mensaje-error .mensaje").html("No hay " + nuevaCantidad + " unidades en stock para la venta.
Puedes reducir la cantidad a pedir o ponerte en contacto con la tienda.
Disculpa las molestias.");
                        $('.linea-cesta button').attr('disabled', false);
                        respuesta = false;
                    }
                },
                error: function(response) {
                    console.log("error AJAX");
                    respuesta = false;
                }
            });
        } else {
            respuesta = true;
        }
    }
	return respuesta;
}
function recalcular_cantidad_producto(referencia, proveedor, linea) {
    var cantidad = stringToFloat($("#cantidad-" + linea).val());
    var cantidadReservada = stringToFloat($("#cantidad-" + linea).data('cantidad'));
    $.ajax({
        dataType: "json",
        type: "POST",
        url: "ControlB2C",
        data: {
        	json: 1,
    		id_referencia: referencia,
    		old_id_linea: linea,
    		id_ref_proveedor: proveedor,
    		cantidad: cantidad,
    		ces_conectado: 0,
    		ces_contado: 0,
    		stock_almacen: $('#cantidad-' + linea).data('almacen'),
    		tabla: 3,
    		estado: 2
    	},
        success: function(response) {
            if (response === 0) {
                location.reload();
            } else if (response === -1) {
                $("#modal-sesion-caducada" + response).modal("show");
                $("#modal-sesion-caducada" + response).on('hide.bs.modal', function(e) {
                    window.location.href = "login.jsp?inicio_aplicacion=4&origen=5";
                });
            } else if (response === -2) {
                $("#modal-sesion-caducada" + response).modal("show");
                $("#modal-sesion-caducada" + response).on('hide.bs.modal', function(e) {
                    location.reload();
                });
            } else {
            	if (response === 1 || response === 2 || response === 3 | response === 4) {
		            var mensaje =   '* El producto no se ha añadido a la cesta. Ponte en contacto con la tienda. \
		                            
Teléfono: 95 435 85 15
';
		        } else if (response === 5) {
                    var mensaje =   'No hay suficiente stock para la venta.
 \
                                    Puedes reducir la cantidad a pedir o ponerte en contacto con la tienda.
 \
                                    Disculpa las molestias.';
                    $("#cantidad-" + linea).val(cantidadReservada);
                }
                
                $('.linea-cesta button').attr('disabled', false);
                $("#modal-mensaje-error .mensaje").html(mensaje);
                $("#modal-mensaje-error").modal("show");
            }
        },
        error: function(response) {
            console.log("error");
        }
    });
}
// ================== Eliminar lineas =================
function eliminar_linea(linea) {
    $.ajax({
        dataType: "json",
        type: "POST",
        url: "ControlB2C",
        data: { json: 1, id_linea: linea, tabla: 3, estado: 3},
        success: function(response) {
            if (response == 0) {
                location.reload();
            };
        },
        error: function(response) {
            console.log("error");
        }
    });
}
function modalConfirmarVaciarCesta() {
    var mensaje = '¿Estás seguro de querer vaciar la cesta?';
    modalConfirm(mensaje, vaciar_cesta);
}
function vaciar_cesta() {
    $.ajax({
        dataType: "json",
        type: "POST",
        url: "ControlB2C",
        data: { json: 1, tabla: 3, estado: 4},
        success: function(response) {
            //location.reload();
            location.href = 'cesta.jsp';
        },
        error: function(response) {
            console.log("error");
        }
    });
}
// =================== Añadir regalo a la cesta ==============
function anadir_regalo(referencia) {
    $.ajax({
        dataType: "json",
        type: "POST",
        url: "ControlB2C",
        data: { 
        	json: 1,
            tabla: 3,
            estado: 5,
            id_referencia: 
            referencia, 
            ces_conectado: 0, 
            ces_contado: 0 },
        success: function(response) {
            switch (response) {
                case 0:
                    location.reload();
                    break;
                case -1:
                    $("#modal-sesion-caducada" + response).modal("show");
                    $("#modal-sesion-caducada" + response).on('hide.bs.modal', function(e) {
                        window.location.href = "login.jsp?inicio_aplicacion=4&origen=5";
                    });
                    break;
                case -2:
                    $("#modal-sesion-caducada" + response).modal("show");
                    $("#modal-sesion-caducada" + response).on('hide.bs.modal', function(e) {
                        location.reload();
                    });
                    break;
                default:
                    $(".validation-msj:not(#anadir-regalo-" + response + ")").hide();
                    $("#anadir-regalo-" + response).show();
                    break;
            }
        },
        error: function(response) {
            console.log("error");
            console.log(response);
        }
    });
}
// ======================== Fechas recogida ========================
var RECOGIDA_KEY = 'web_env_rec_hor_maxima';
var ENTREGA_KEY = 'rep_hor_final';
function cargarFechasRecogida(ORIGEN_CONTADO, input) {
    if (ORIGEN_CONTADO && forEnvioValidoParaFechas() === false) {
        return;
    }
    if (!input) {
        input = document.getElementById('almacenes-recogida').parentElement.parentElement.querySelector('input');
    }
    var idAgeServicio = input.dataset.idAgeServicio;
    $('#titulo-fechas').text('Selecciona una fecha de recogida');
    var horaLimiteTexto = 'Hora límite de recogida';
    var almacen = $('#almacenes-recogida').val() || input.dataset.almacen;
    $.ajax({
        type: "POST",
        dataType: "JSON",
        url: "ControlB2C_1",
        data: { 
            tabla: 7,
            estado: 7,            
            almacen: almacen,
            id_age_servicio: idAgeServicio,
        },
        success: function(response) {
            if (response.resultado === 0) {
                if (response.dias.length > 0) {
                    pintarFechasRecEnt(response.dias, RECOGIDA_KEY, horaLimiteTexto);
                }
            }
        },
        error: function (error) {
            console.log(error);
        }
    });
}
function pintarFechasRecEnt(dias, key, horaLimiteTexto) {
    var contenedorEl = document.getElementById('contenedor-fechas-recogida');
    contenedorEl.innerHTML = '';
    for (var i = 0; i < dias.length; i++) {
        var dia = dias[i];
        var itemEl = document.createElement('div');
        itemEl.className = 'item';
        itemEl.dataset.fecha = dia.fecha;
        if (i === 0) {
            itemEl.classList.add('active');
            fechaActiva = dia.fecha;
        }
        itemEl.addEventListener('click', activarFechaRecogida.bind(itemEl));
        var fechaEl = document.createElement('div');
        fechaEl.className = 'fecha';
        fechaEl.innerText = dia.fecha;
        itemEl.appendChild(fechaEl);
        var horaLimiteEl = document.createElement('div');
        horaLimiteEl.className = 'hora-limite';
        horaLimiteEl.innerHTML = '' + horaLimiteTexto + ': ' + dia[key];
        itemEl.appendChild(horaLimiteEl);
        contenedorEl.appendChild(itemEl);
    }
    $('#fechas-recogida').show();
}
function activarFechaRecogida() {
    $('.scroll-horizontal .item.active').removeClass('active');
    $(this).addClass('active');
    fechaActiva = this.dataset.fecha;
}
function eliminarFechasRecogida() {
    $('#fechas-recogida').hide();
    $('#contenedor-fechas-recogida').html('');
    fechaActiva = '';
}
// Entrega
function cargarFechasEntrega(input) {
    var idAgeServicio = input.dataset.idAgeServicio;
    $('#titulo-fechas').text('Selecciona una fecha de entrega');
    var horaLimiteTexto = 'Hora límite de pedido';
    $.ajax({
        type: "POST",
        dataType: "JSON",
        url: "ControlB2C_1",
        data: { 
            tabla: 7,
            estado: 8,
            id_age_servicio: idAgeServicio,
        },
        success: function(response) {
            if (response.resultado === 0) {
                if (response.dias.length > 0) {
                    pintarFechasRecEnt(response.dias, ENTREGA_KEY, horaLimiteTexto);
                }
            }
        },
        error: function (error) {
            console.log(error);
        }
    });
}
// Cupones
const cuponForm = document.getElementById('formulario-cupon');
function aplicarCupon (botonEl) {
    const cuponInput = document.getElementById('cupon-input');
    
    if (!validarVacioSimple(cuponInput)) {
        cuponInput.focus();
        return;
    }
    botonEl.disabled = true;
    const cupon = cuponInput.value.toUpperCase();
    $.ajax({
        type: "POST",
        dataType: "JSON",
        url: "ControlB2C_2",
        data: { 
            tabla: 3,
            estado: 10,
            cupon,
        },
        success: function(response) {
            if (response.resultado === 0) {
                location.reload();
            } else {
                $('#cupon-error').text(response.mensaje).show();
            }
        },
        error: function (error) {
            console.log(error);
        },
        complete: function () {
            botonEl.disabled = false;
        }
    })
}
if (cuponForm) {
    cuponForm.addEventListener('submit', function (event) {
        event.preventDefault();
        aplicarCupon(event.target.querySelector('button'));
    });
}
            
    var tv_seleccionar_agencia_envio_contado_recoger_seleccionar_almacen = 0;
                
    var tv_contado_envio_recoger_seleccionar_almacen = 0;
    
var fechaActiva = '';
var IS_CONTADO = true;
//  ====================== Recalcular precios en funcion de las opciones seleccionadas ======================
var importe_cesta;
var imp_ces_base;
function recalcular_precios_cesta(inicial) {
    $.ajax({
        dataType: "json",
        
			type: "POST",
            url: "ControlB2C",
            async: false,
			data: {
				json: 1,
				tabla: 3,
				estado: 7,
				inicial: inicial,
				for_envio: $('input[name=1]:checked').val(),
				for_pago: $('input[name=2]:checked').val(),
				id_usu_dir_envio: $("#direccion").val()
			},
            
        success: function(response) {
            if (response["resultado"] == "-1") {
                window.location.href = "login.jsp?origen=5";
			}else if (response["resultado"] != "0") {
                window.location.href = "cesta.jsp";
            } else {
                var envio = parseInt(replace(response["for_envio"], ",", "."));
                var pago = parseInt(replace(response["for_pago"], ",", "."));
                var portes = stringToFloat(response.imp_portes);
                // Envio
                for (var i = 0; i < 5; i++) {
                    if (response["for_envio_" + i] == "0") {
                        $("#for_envio_" + i).hide();
                    } else if (response["for_envio_" + i] == "1") {
                        $("#for_envio_" + i).show();
                    }
                }
                // Pago
                for (var i = 1; i < 8; i++) {
                    if (response["for_pago_" + i] == "0") {
                        $("#for_pago_" + i).hide();
                    } else if (response["for_pago_" + i] == "1") {
                        $("#for_pago_" + i).show();
                    }
                }
                // BTN Pagar
                var pagar = parseInt(response.pagar);
                if (pagar === 0) {
                    $('#on-pagar').prop('disabled', true);
                } else if (pagar === 1) {
                    $('#on-pagar').prop('disabled', false);
                }
                // Activar radios
                $("input[name=1]:checked").prop("checked", false);
                $("#for_envio_" + envio + " input").prop("checked", true);
                $("input[name=2]:checked").prop("checked", false);
                $("#for_pago_" + pago + " input").prop("checked", true);
                importe_cesta = stringToFloat(response.imp_total);
				imp_ces_base = stringToFloat(response.imp_ces_base);
                $.each(response, function (key, value) {
                    preId = replaceAll(key, '_', '-');
                    $('#' + preId ).html(value); 
                    $('#' + preId + '-xs').html(value); 
                });
                comprobarLineasImportes(response);
            }
        },
        error: function(response) {
            console.log("error");
            console.log(response);
        }
    });
}
function comprobarLineasImportes(importes) {
    var portes = parseFloat(importes.imp_portes.replace(',', '.'));
	var gastos = parseFloat(importes.imp_gastos.replace(',', '.'));
	if (portes > 0) {
		$('#imp-envio').show();
		$('#imp-envio-xs').show();
	} else {
		$('#imp-envio').hide();
		$('#imp-envio-xs').hide();
	}
	if (gastos > 0) {
		$('#imp-gas').show();
		$('#imp-gas-xs').show();
	} else {
		$('#imp-gas').hide();
		$('#imp-gas-xs').hide();
	}
}
// ==================== Actualizar el botón principal dependiendo del tipo de envío seleccionado ========== 
function actualizar_boton_cesta() {
    if (($("#contrareembolso").is(":checked")) || ($("#pagar-tienda").is(":checked")) || ($("#tb").is(":checked")) || ($("#confirmar").is(":checked"))) {        
        $("#on-pagar").html(" Enviar pedido");
    } else {        
        $("#on-pagar").html(" Pagar");
    }
}
// ===================== Cuando le des al boton de pagar o enviar pedido ======================
function validar_cesta() {
    recalcular_precios_cesta(0);
    var contrareembolso_importe_minimo = 0.0;
    var contrareembolso_importe_maximo = 0.0;
    var tienda_importe_minimo = 0.0;    
    
    
		var agencias = 0;
		
    
    $('#msj-enviar-error').text('');
	$('#msj-enviar-error').hide();
    if (agencias==1 && $('input[name=rad-id-age-servicio]:checked').val() === undefined) {
	    $('#msj-enviar-error').text('Selecciona un método de envío.');
        $('#msj-enviar-error').show();
    } else if (agencias==1 && $("#pagar-tienda").is(":checked") && $('input[name=rad-id-age-servicio]:checked').data('for-envio')!=3) {        
		$('#msj-enviar-error').text('La recogida en tienda es obligatoria al seleccionar pago en tienda.');
        $('#msj-enviar-error').show();
    } else if (agencias==1 && $("#contrareembolso").is(":checked") && $('input[name=rad-id-age-servicio]:checked').data('for-envio')==3) {        
   		$('#msj-enviar-error').text('La recogida en tienda es incompatible con el pago por contrareembolso.');
        $('#msj-enviar-error').show();
    } else if (agencias==0 && $("#pagar-tienda").is(":checked") && !$("#recoger").is(":checked")) {
		$('#msj-enviar-error').text('La recogida en tienda es obligatoria al seleccionar pago en tienda.');
        $('#msj-enviar-error').show();
    } else if (agencias==0 && $("#contrareembolso").is(":checked") && $("#recoger").is(":checked")) {
   		$('#msj-enviar-error').text('La recogida en tienda es incompatible con el pago por contrareembolso.');
        $('#msj-enviar-error').show();
    } else if (contrareembolso_importe_minimo != 0 && $("#contrareembolso").is(":checked") && imp_ces_base < contrareembolso_importe_minimo) {
		$('#msj-enviar-error').text('El importe mínimo para pago contrareembolso es de 0,00 € + impuestos. Por favor selecciona otro método de pago o añade más productos.');
        $('#msj-enviar-error').show();
    } else if (contrareembolso_importe_maximo != 0 && $("#contrareembolso").is(":checked") && imp_ces_base > contrareembolso_importe_maximo) {
		$('#msj-enviar-error').text('El importe máximo para pago contrareembolso es de 0,00 € + impuestos. Por favor selecciona otro método de pago.');
        $('#msj-enviar-error').show();
    } else if (tienda_importe_minimo != 0 && $("#pagar-tienda").is(":checked") && imp_ces_base < tienda_importe_minimo) {
		$('#msj-enviar-error').text('El importe mínimo para pago en tienda es de 0,00 € + impuestos. Por favor selecciona otro método de pago o añade más productos.');
        $('#msj-enviar-error').show();
    } else {
        if (validar_checkbox("#chk-privacidad") && validar_checkbox("#chk-condiciones") && validar_checkbox("#chk-cambios")) {
            if (importe_cesta > 0) {
                var texto_anterior = $("button.btn-pagar").html();                
                $("button.btn-pagar").html("Conectando, espera por favor...").prop('disabled', true);
                $.ajax({
                    dataType: "json",
                    type: "POST",
                    url: "ControlB2C",
                    data: { json: 1, tabla: 2, estado: 3},
                    success: function(response) {
                        if (response == "0") {
                            pagar();
                        } else if (response == "-1") {
                            window.location.href = "login.jsp?origen=5";
                        }
                    },
                    error: function(response) {
                        console.log("error");
                        return false;
                    }
                });
            } else {
	            $('#msj-enviar-error').text('La cesta está vacía.');
                $('#msj-enviar-error').show();
            }
        }
    }
}
function calcular_envio_cesta() {
    var pais = $("#cod-pais").val();
    if (pais === 'ESP') {
        var provincia = $("#dropdown-provincia").val();
        $("#provincia").show();
    } else {
        $("#provincia").hide();
        var provincia = '0';
    }
    
        var data = {
            json: 1,
            cod_pais: pais,
            provincia: provincia,
            tabla: 3,
            estado: 8
        };
        consultar_gastos_envio(data, 'ControlB2C');
        
}
// ==================== Dirección de envío ==================
function cargar_direccion_cesta() {
    $.ajax({
        dataType: "json",
        type: "POST",
        url: "ControlB2C",
        async: false,
        data: { json: 1, id_usu_dir_envio: $("#direccion").val(), tabla: 1, estado: 14},
        success: function(response) {
            $("#calle, #cp-ciudad, #pais").empty();
            $("#calle").append(response["via"] + " " + response["direccion1"]);
            $("#cp-ciudad").append(response["cod_postal"] + " " + response["poblacion"] + " " + response["provincia"]);
            $("#pais").append(response["pais"]);
            
            recalcular_precios_cesta(1);
        },
        error: function(response) {
            console.log("error");
            console.log(response);
        }
    });
}
// Almacenes
    function comprobarAlmacenesRecogidaContadoEstandard () {}
	
function pagar() {
    var url = "ControlTiendaVirtual";
    
    var pago = $('input[name=2]:checked', '#metodo-pago').val();
    if (pago == 1) {
        url = url + "?estado=10";
    } else if (pago == 2 || pago == 3 || pago == 4 || pago == 6) {
        url = url + "?estado=8";
    } else if (pago == 5 || pago == 7) {
        url = url + "?estado=11";
    }
    url = url + "&id_usu_dir_envio=" + $("#direccion").val();
    url = url + "&for_pago=" + pago;
    
    
		var envio = $('input[name=1]:checked', '#forma-envio').val();
        url = url + "&for_envio=" + envio;
		  
      
    window.location.href = url;
    //console.log(url);
}