$(document).ready(function()
{
    $.extend( $.fn.dataTable.defaults,
    {
        "language" :
        {
            "sProcessing": "Procesando...",
            "sLengthMenu": "Mostrar _MENU_",
            "sZeroRecords": "No se han encontrado resultados",
            "sEmptyTable": "Sin datos todavía",
            "sInfo": "Mostrando de la entrada _START_ a la _END_ de un total de _TOTAL_ entradas",
            "sInfoEmpty": "Todavía no hay datos",
            "sInfoFiltered": "(filtrado de _MENU_ entradas)",
            "sSearchPlaceholder": "Buscar",
            "sInfoPostFix": "",
            "sSearch": "",
            "sUrl": "",
            "oPaginate": {
                "sFirst":    " ",
                "sPrevious": " ",
                "sNext":     " ",
                "sLast":     " "
            }
        }
    });
});
function preparaLugar(pais, provincia, poblacion, idInputPais,idInputProvincia, idInputLocalidad)
{
    if(pais > 0)
    {
        actualizaProvincias(idInputLocalidad,idInputProvincia, idInputPais, provincia, pais, provincia, poblacion, undefined);
    }
    $("#"+idInputPais).change(function()
    {
        actualizaProvincias(idInputLocalidad,idInputProvincia, idInputPais, provincia);
    });
    if(provincia > 0)
    {
        actualizaCiudades(idInputLocalidad, idInputProvincia,  idInputPais,poblacion, pais, provincia, poblacion, $("#"+idInputProvincia).val()*1);
    }
    $("#"+idInputProvincia).change(function()
    {
        actualizaCiudades(idInputLocalidad, idInputProvincia, idInputPais, undefined, $("#"+idInputPais).val()*1, $("#"+idInputProvincia).val()*1);
    });
}
function actualizaProvincias(idCampoLocalidad, idCampoRegion, idCampoPais, idRegionPreEstablecida, forceIdPais, forceIdRegion,forceIdLocalidad, onFinish, textoSelect, textoLoading)
{
    if(forceIdPais == undefined)
    {
        forceIdPais = $("#"+idCampoPais).val();
    }
    if(forceIdRegion == undefined)
    {
        forceIdRegion = $("#"+idCampoRegion).val();
    }
    if(forceIdLocalidad == undefined)
    {
        forceIdLocalidad = $("#"+idCampoLocalidad).val();
    }
    if(textoSelect == undefined)
    {
        textoSelect = "Selecciona una ciudad";
    }
    if(textoLoading == undefined)
    {
        textoLoading = "Cargando...";
    }
    var data =
        {
            idPais: forceIdPais
        };
    $("#"+idCampoRegion).empty();
    $("#"+idCampoRegion).append( "");
    var returned = $.ajax(
        {
            url: "ajax/Ubicacion.listadoRegiones.php?CSRF="+CSRF,
            type: "POST",
            dataType : "json",
            data : data,
            error: function(XMLHttpRequest, textStatus, errorThrown)
            {
                //ClassBlockUI.abrirBlockUIEstandarMensaje(XMLHttpRequest.responseText, true);
            },
            success: function(data)
            {
                $("#"+idCampoRegion).empty();
                $("#"+idCampoRegion).append( "");
                for(var index in data)
                {
                    $("#"+idCampoRegion).append( "" );
                }
                if(idRegionPreEstablecida!=undefined)
                {
                    $("#"+idCampoRegion).val(idRegionPreEstablecida);
                }
                if(onFinish != undefined && typeof(onFinish) == "function")
                {
                    onFinish();
                }
            }
        });
}
function actualizaCiudades(idCampoLocalidad, idCampoRegion, idCampoPais, idLocalidadPreEstablecida, forceIdPais, forceIdRegion,forceIdLocalidad, onFinish, textoSelect, textoLoading)
{
    if(forceIdPais == undefined)
    {
        forceIdPais = $("#"+idCampoPais).val();
    }
    if(forceIdRegion == undefined)
    {
        forceIdRegion = $("#"+idCampoRegion).val();
    }
    if(forceIdLocalidad == undefined)
    {
        forceIdLocalidad = $("#"+idCampoLocalidad).val();
    }
    if(textoSelect == undefined)
    {
        textoSelect = "Selecciona una localidad";
    }
    if(textoLoading == undefined)
    {
        textoLoading = "Cargando...";
    }
    var data =
        {
            idPais: forceIdPais,
            idRegion: forceIdRegion
        };
    $("#"+idCampoLocalidad).empty();
    $("#"+idCampoLocalidad).append( "");
    var returned = $.ajax(
    {
        url: "ajax/Ubicacion.listadoCiudades.php?CSRF="+CSRF,
        type: "POST",
        dataType : "json",
        data : data,
        error: function(XMLHttpRequest, textStatus, errorThrown)
        {
            //ClassBlockUI.abrirBlockUIEstandarMensaje(XMLHttpRequest.responseText, true);
        },
        success: function(data)
        {
            $("#"+idCampoLocalidad).empty();
            $("#"+idCampoLocalidad).append( "");
            for(var index in data)
            {
                $("#"+idCampoLocalidad).append( "" );
            }
            if(idLocalidadPreEstablecida!=undefined)
            {
                $("#"+idCampoLocalidad).val(idLocalidadPreEstablecida);
            }
            if(onFinish != undefined && typeof(onFinish) == "function")
            {
                onFinish();
            }
        }
    });
}
function actualizaCursos(idCampoCurso, idCampoUniversidad, idCursoPreEstablecida, forceIdUniversidad,forceIdCurso, onFinish, textoSelect, textoLoading)
{
    if(forceIdUniversidad == undefined)
    {
        forceIdUniversidad = $("#"+idCampoUniversidad).val();
    }
    if(forceIdCurso == undefined)
    {
        forceIdCurso = $("#"+idCampoCurso).val();
    }
    if(textoSelect == undefined)
    {
        textoSelect = "Selecciona tu curso";
    }
    if(textoLoading == undefined)
    {
        textoLoading = "Cargando...";
    }
    var data =
        {
            idUniversidad: forceIdUniversidad,
            idCurso: forceIdCurso
        };
    $("#"+idCampoCurso).empty();
    $("#"+idCampoCurso).append( "");
    var returned = $.ajax(
        {
            url: "ajax/Universidad.listadoCursos.php?CSRF="+CSRF,
            type: "POST",
            dataType : "json",
            data : data,
            error: function(XMLHttpRequest, textStatus, errorThrown)
            {
                //ClassBlockUI.abrirBlockUIEstandarMensaje(XMLHttpRequest.responseText, true);
            },
            success: function(data)
            {
                $("#"+idCampoCurso).empty();
                $("#"+idCampoCurso).append( "");
                for(var index in data)
                {
                    $("#"+idCampoCurso).append( "" );
                }
                if(idCursoPreEstablecida!=undefined)
                {
                    $("#"+idCampoCurso).val(idCursoPreEstablecida);
                }
                if(onFinish != undefined && typeof(onFinish) == "function")
                {
                    onFinish();
                }
            }
        });
}
/*
    ClassBlockUI.abrirBlockUIEstandar(contenedorIDAMostrar[, accionCerrar, headerText, extraClass, restaurarElemento]);
    ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje[, isAlertOrButtons, onClose]);
    ClassBlockUI.abrirBlockUIConfirm(mensaje, textoBotonAceptar, accionBotonAceptar, textoBotonCancelar[, accionBotonCancelar]); //accionBotonCancelar="close"
    ClassBlockUI.abrirBlockUIEsperePorFavor:([mensaje]);
*/
var ClassBlockUI =
{
	restaurarElemento: function()
    {
    	var data = $("body").data('blockUIEstandar.history');
        if (data)
        {
            data.el.style.display = data.display;
            data.el.style.position = data.position;
            if (data.parent)
                data.parent.appendChild(data.el);
            $("body").removeData('blockUIEstandar.history');
            $("#"+data.generatedId).remove();
        }
    },
	    abrirBlockUIEstandar: function(contenedorIDAMostrar, accionCerrar, headerText, extraClass, restaurarElemento)
    {   
    	if(restaurarElemento || restaurarElemento == undefined)
        {
    		ClassBlockUI.restaurarElemento();
        }
		$(".modalAutoHide").modal("hide");
        if($(".modal").size()>0){$("body").addClass("modal-open")}
        
        if(contenedorIDAMostrar == undefined || $("#"+contenedorIDAMostrar).size() == 0){return;}
            
		//var blockUIId="blockUI_"+new Date().getTime();
        var blockUIId="blockUI_"+contenedorIDAMostrar;
		
        extraClass = extraClass == undefined ? "" : extraClass; //modal-lg
        
        var object = $("#"+contenedorIDAMostrar);
        var node = object[0];
        var data = {};
        $("body").data('blockUIEstandar.history', data);
        data.el = node;
        data.parent = node.parentNode;
        data.display = node.style.display;
        data.position = node.style.position;
        data.generatedId = blockUIId;
        data.object = object;
        if (data.parent)
            data.parent.removeChild(node);
        var header = headerText != undefined ? headerText : "";
                
        var message = ''+
        '
";
            for(var index in isAlertOrButtons)
            {
		        botonera +=  " "+isAlertOrButtons[index]["text"]+" ";
            }
            botonera += "
";
        }
        
        var message = '';
        message += '").html(data);
          if($el.prop('tagName') === 'INPUT'){
             $('input', $html).attr('value', $el.val());
             if($el.prop('checked')){
                $('input', $html).attr('checked', 'checked');
             }
          } else if ($el.prop('tagName') === 'TEXTAREA'){
             $('textarea', $html).html($el.val());
          } else if ($el.prop('tagName') === 'SELECT'){
             $('option:selected', $html).removeAttr('selected');
             $('option', $html).filter(function(){
                return ($(this).attr('value') === $el.val());
             }).attr('selected', 'selected');
          }
          data = $html.html();
          
          //console.log("Antes habia: "+data);
          //console.log("Ahroa quiere poner: "+$html.html());
        }
          
        return data;
    },
    actualizarPreviewCarrito: function (data) {
        $("#previewCarritoProductos").html(data["productos"]);
        $("#btnAbreCarrito .contadorNumItems").html(data["numProductos"]);
        $("#previewCarritoAhorras span").html(data["teAhorras"]);
        $("#previewCarritoSubtotal span").html(data["subtotal"]);
        $("#previewCarritoIVA span").html(data["IVA"]);
        $("#previewCarritoTotal span").html(data["total"]);
        $("#previewCarritoEnvioTitulo").html(data["textoEnvio"]);
        $("#previewCarritoEnvioProgreso span").css("width", data["progreso"]+"%");
        if(data["gastosEnvio"][1]*1==0)
        {
            $("#precioEntrega_1").html("
¡Gratis!");
        }
        else
        {
            $("#precioEntrega_1").html("
"+data["gastosEnvio"][3]+"€ ("+data["gastosEnvio"][0]+"% IVA incluido)");
        }
        if (typeof tablatablaCarrito !== 'undefined' && tablatablaCarrito != null && tablatablaCarrito != undefined) {
            tablatablaCarrito.ajax.reload(null, false);
        }
        if (typeof tablatablaTotales !== 'undefined' && tablatablaTotales != null && tablatablaTotales != undefined) {
            tablatablaTotales.ajax.reload(null, false);
        }
    },
    actualizaTotales: function ()
    {
        var transporte = $("input[name=formTransporte]:checked").val();
        var pais = $("#formEnvioPais").val();
        var provincia = $("#formEnvioProvincia").val();
        tablatablaTotales.ajax.url('ajax/TiendaVirtualCarrito.getTotales.php?CSRF='+CSRF+'&pais='+pais+'&provincia='+provincia+"&idTransporte="+transporte).load();
    }
};
var ClassTiendaVirtualPedidos =
{
	initReactivaClicks: function(){
   		$(".tooltipStandardHTML").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom', contentAsHTML: true});
   		$(".tooltipStandard").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom'});
        //$(".btnAgregarUnidad").unbind("click");
   		//$("body").on("click", ".btnAgregarUnidad", function () {
        $(".inputCantidadProductoSecundario").unbind("keyup").keyup(function(){
            idProducto = $(this).attr("data-id");
            cantidadProducto = $(".input_cantidad_"+idProducto).val();
            cantidad = cantidadProducto;
            ClassTiendaVirtualPedidos.calculaPrecioProducto(idProducto, cantidad);
            ClassTiendaVirtualPedidos.compruebaStock($(this), true);
        });
        $(".btnAgregarUnidad").unbind("click").makeTagLink(function(){
            idProducto = $(this).attr("data-id");
            cantidadProducto = $(".input_cantidad_"+idProducto).val();
            cantidad = parseInt(cantidadProducto)+1;
            ClassTiendaVirtualPedidos.calculaPrecioProducto(idProducto, cantidad);
            ClassTiendaVirtualPedidos.compruebaStock($(this), true);
        });
        //$("body").on("click", ".btnQuitarUnidad", function () {
        $(".btnQuitarUnidad").unbind("click").makeTagLink(function(){
            idProducto = $(this).attr("data-id");
            cantidadProducto = $(".input_cantidad_"+idProducto).val();
            cantidad = 0;
            if(cantidadProducto > 0) {
                cantidad = parseInt(cantidadProducto) - 1;
            }
            ClassTiendaVirtualPedidos.calculaPrecioProducto(idProducto, cantidad);
            ClassTiendaVirtualPedidos.compruebaStock($(this), true);
/*
            if(cantidadProducto >0)
            {
                cantidad = parseInt(cantidadProducto)-1;
                $(".input_cantidad_"+idProducto).val(cantidad);
                precioOferta = $("#precioOfertaTablaProductosSecundarios_"+idProducto).attr("data-preciooferta");
                $(".subTotalTablaProductosSecundarios_"+idProducto).html_formated(precioOferta*cantidad, {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
            }
            else if(cantidadProducto == 0)
            {
                $(".subTotalTablaProductosSecundarios_"+idProducto).html_formated(0, {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
            }*/
        });
    },
    compruebaStock: function(este, esInput, mostrandoAtributos)
    {
	            return true;
    },
    calculaPrecioProducto: function(idProducto, cantidad)
    {
        if(cantidad >0) {
            $(".input_cantidad_" + idProducto).val(cantidad);
            precioOferta = $("#precioOfertaTablaProductosSecundarios_"+idProducto).attr("data-preciooferta");
            $(".subTotalTablaProductosSecundarios_"+idProducto).html_formated(precioOferta*cantidad, {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
        }
        else if(cantidad == 0)
        {
            $(".input_cantidad_" + idProducto).val(cantidad);
            $(".subTotalTablaProductosSecundarios_"+idProducto).html_formated(0, {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
        }
    },
	initConfirmarPedido: function(tipoUsuario, opciones_validacion, paisEnvio, provinciaEnvio, poblacionEnvio, paisFacturacion, provinciaFacturacion, poblacionFacturacion, idUsuario)
    {
	    ClassTiendaVirtualPedidos.validacion_pedido=$("#frmCofirmarPedido").validate(opciones_validacion);	
    	$("#btn_confirmar_compra").makeTagLink(function(){ClassTiendaVirtualPedidos.confirmarPedido(tipoUsuario)});
        preparaLugar(paisEnvio, provinciaEnvio, poblacionEnvio, "formEnvioPais", "formEnvioProvincia", "formEnvioLocalidad");
		//preparaLugar(paisFacturacion, provinciaFacturacion, poblacionFacturacion, "formFacturacionPais", "formFacturacionProvincia", "formFacturacionLocalidad");
        $("#copiarDireccionesCarrito").click(function(){
            ClassTiendaVirtualPedidos.preparaDirecciones(tipoUsuario)
        });
        var transporte = $("input[name=formTransporte]:checked").val()*1;
        if(idUsuario<=0)
        {
            ClassTiendaVirtualPedidos.preparaDirecciones(tipoUsuario, transporte == 2 ? undefined : true);
        }
        else
        {
            ClassTiendaVirtualPedidos.preparaDirecciones(tipoUsuario, transporte == 2 ? false : true);
        }
        $(".opcionPago").click(function(){
            if(!$(this).hasClass("opcionPagoTransferencia"))
            {
                $(".transferenciaBancariaInfo").hide();
            }
            else
            {
                $(".transferenciaBancariaInfo").show();
            }
        });
    },
    preparaDirecciones: function(tipoUsuario, forzarMismosDatos){
	    var transporte = $("input[name=formTransporte]:checked").val();
        var mismosDatos = forzarMismosDatos != undefined ? forzarMismosDatos : $("#copiarDireccionesCarrito").is(":checked");
        if(transporte == 2)
        {
            $("#formDireccionEnvio").css("display", "none");
            $(".copiarDirecciones").css("display", "none");
            $("#contieneFormDireccionFacturacion").show();
            mismosDatos = forzarMismosDatos != undefined ? forzarMismosDatos : false;
        }
        else
        {
            $("#formDireccionEnvio").css("display", "flex");
            $(".copiarDirecciones").css("display", "block");
            $("#contieneFormDireccionFacturacion").hide();
        }
        if(mismosDatos)
        {
            $("#formDireccionFacturacion").hide();
        }
        else
        {
            $("#formDireccionFacturacion").show();
            var elements = ["formFacturacionNombre", "formFacturacionDNI", "formFacturacionTelefono", "formFacturacionDireccion", "formFacturacionCodPostal", "formFacturacionProvincia", "formFacturacionLocalidad"];
            for(var index in elements)
            {
                if($("#"+elements[index]).val() == "")
                {
                    if(!$("#"+elements[index].replace("Facturacion", "Envio")).is("select"))
                    {
                        $("#"+elements[index]).val($("#"+elements[index].replace("Facturacion", "Envio")).val())
                    }
                    else if($("#"+elements[index].replace("Facturacion", "Envio")).val()>0)
                    {
                        $("#"+elements[index]).val($("#"+elements[index].replace("Facturacion", "Envio")).find("option:selected").text())
                    }
                }
            }
        }
        if(tipoUsuario*1 == 1)
        {
        	ClassTiendaVirtualCarrito.actualizaTotales();
        }
        else
        {
            ClassTiendaVirtualClienteCarrito.actualizaTotales();
        }
    },
    envioValido: function(esValido)
	{
		if(esValido)
		{
			$(".finalizarPedido").show();
		}
		else
		{
			$(".finalizarPedido").hide();
			ClassBlockUI.abrirBlockUIEstandarMensaje("", true, false);
		}
	},
	confirmarPedido: function(tipoUsuario)
	{
		if (!$("#frmCofirmarPedido").valid())
		{
			ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revisa los campos porque se han detectado los siguientes errores 
"+ClassTiendaVirtualPedidos.validacion_pedido.invalidMessages("
"), true, false);
			return;
		}
		
		var opcionesDatos =
        {
            url: "ajax/TiendaVirtualPedidos.procesarPedido.php?CSRF="+CSRF+"&tipoUsuario="+tipoUsuario,
			type: "POST",
			dataType : "json",
			data : $("#frmCofirmarPedido").serialize(),
			success: function(data)
			{
			    var callbackOK = false;
				if(data["error_number"] < 0 )
				{
                    errorMessage="";
                    var lastError = "";
                    for(i in data["info"])
                    {
                        if(typeof(data["info"][i]) == "function")
                            continue;
                        errorMessage+=data["info"][i]+"\r\n";
                        $("#"+i).focus();
                        $("#"+i).addClass("error");
                        lastError = i;
                    }
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"]+errorMessage, true, false);
				}
				else
				{
                    gtagPurchase = data["gtagPurchase"];
                    gtagPurchase["event_callback"] = function() {
                        if (callbackOK)
                        {
                            return;
                        }
                        callbackOK = true;
                        switch(data["forma_pago"]*1)
                        {
                            case 1:
                            {
                                ClassTiendaVirtualPedidos.pagoBanco();
                                break;
                            }
                            case 2:
                            {
                                ClassTiendaVirtualPedidos.pagoPaypal();
                                break;
                            }
                            case 3:
                            case 5:
                            default:
                            {
			                                                    window.location = data["enlacePedidoRealizado"];
                                break;
                            }
                        }
                    };
                    $("#procesaPagoExterno").html(data["formularioFormaPago"]);
                    gtag('event', 'purchase', gtagPurchase);
				}
			}
        };        
        
		ClassBlockUI.abrirBlockUIEsperePorFavor();
        $.ajax(opcionesDatos);	
			
	},
    pagoPaypal:function()
	{
   		ClassBlockUI.abrirBlockUIEsperePorFavor("");			
		$("#pagoPaypal").submit();
	},
	pagoBanco:function()
	{
   		ClassBlockUI.abrirBlockUIEsperePorFavor("");			
		$("#pagoBanco").submit();
	}
};
var modalAtributos=false;
var modalMensaje = false;
var ClassTiendaVirtualProductos =
{
	actualizaNumProductos:function(idProducto)
	{
		var num_productos = $(".num_productos:eq(0)").text().replace(/[^0-9]/g, "")*1;
		if(num_productos+1 == 1)
		{
			$(".num_productos").html("1 Producto");
		}
		else
		{
			$(".num_productos").html((num_productos+1)+" Productos");
		}
		
	},
    initAgregarProductoCarrito:function()
    {
		$("#cantidad").unbind("keyup").keyup(function()
        {
			ClassTiendaVirtualProductos.actualizarTotal();
        });
        $("#cantidad").pressEnter(function(){
            return;
        });
		$(".ficha_producto_atributos select").change(function()
		{
			ClassTiendaVirtualProductos.actualizarTotal($(this).attr("id"), $(this).find("option:selected").attr("data-suplemento")*1);
		});
		$(".btnAgregarCarrito").unbind("click").makeTagLink(function()
        {
        	ClassTiendaVirtualProductos.agregarAlCarritoCompruebaAtributos(true, $(this))
        });
        $(".btnAgregarCarritoListado").unbind("click").makeTagLink(function()
        {
            ClassTiendaVirtualProductos.agregarAlCarritoCompruebaAtributos(false, $(this))
        });
    },
    actualizarTotal:function(idAtributo, valorAtributo)
	{
		if(idAtributo!=undefined)
		{
			opciones[idAtributo] = valorAtributo;
		}
		//le anadido dividir entre 100 para que lo haga bien, sino suma decimales
        var subtotal = ($("#ficha_producto_precio").val()*1);
        var subtotal_sin_iva = ($("#ficha_producto_precio_sin_iva").val()*1);
        var subtotal_original = ($("#ficha_producto_precio_original").val()*1);
		var subtotal_original_sin_iva = ($("#ficha_producto_precio_original_sin_iva").val()*1);
		console.log(subtotal, subtotal_original,subtotal_sin_iva, subtotal_original_sin_iva);
		for(var index in opciones)
		{
			if(index.match(/atributo_*/i) == null)
				continue;
			
			subtotal += opciones[index];
            subtotal_original += opciones[index];
            subtotal_sin_iva += opciones[index];                    subtotal_original_sin_iva += opciones[index];   		}
		if(!isNaN($("#cantidad").val()*1))
		{
			$("#productos_detalles_subtotal .tituloPrecioOferta .importeOferta").html_formated(($("#cantidad").val()*subtotal_sin_iva), {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
            $("#productos_detalles_subtotal_original .tituloPrecio .precio").html_formated(($("#cantidad").val()*subtotal_original_sin_iva), {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
            $("#productos_detalle_iva_incluido .importeIVAIncluido").html_formated(($("#cantidad").val()*subtotal), {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
		}
		else
		{
			$("#productos_detalles_subtotal .tituloPrecioOferta .importeOferta").html_formated(subtotal_sin_iva, {symbol: '€'});
  			$("#productos_detalles_subtotal_original .tituloPrecio .precio").html_formated(subtotal_original_sin_iva, {symbol: '€'});
            $("#productos_detalle_iva_incluido .importeIVAIncluido").html_formated(subtotal, {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
        }
	},
        agregarAlCarritoCompruebaAtributos: function(mostrandoAtributos, este){
        
                if(!usuarioIdentificado && !1)
        {
            ClassBlockUI.abrirBlockUIEstandarMensaje("Tienes que identificarse para poder añadir el producto al carrito", true, false);
            return;
        }
        
    	var tieneAtributos =  este.attr("data-tieneAtributos");     	if(mostrandoAtributos || !tieneAtributos)
        {
       	    ClassTiendaVirtualProductos.agregarAlCarrito(mostrandoAtributos, este);
        }
        else
        {
       	    ClassTiendaVirtualProductos.mostrarAtributosParaAgregarAlCarrito(este);
        }
    },
    mostrarAtributosParaAgregarAlCarrito: function(este){
		idProducto =  este.attr("data-idProducto");
        var opcionesDatos =
        {
            type:"POST",
            dataType:"json",
            url:"ajax/TiendaVirtualCarrito.seleccionaAtributos.php?CSRF="+CSRF,
            data: 
            {
                idProducto:idProducto
            },
            success: function(data, textStatus, XMLHttpRequest)
            {
                if(data["error_number"]<0)
                {
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true);
                }
                else
                {
                	if(Object.keys(data["atributos"]).length == 0)
                    {
	                    ClassTiendaVirtualProductos.agregarAlCarrito(false, este);
                    }
                    else
                    {
	                    modalAtributos=ClassBlockUI.abrirBlockUIEstandar("selectAtributos", undefined, "");
                        var seleccionaAtributos = "
";
                        for(var idAtributo in data["atributos"])
                        {
                            seleccionaAtributos+='';
                            seleccionaAtributos+='';							
                        }
                        seleccionaAtributos+='
';
						$("#btnCatalogoComprarAgregarAhoraAtributos").attr("data-idProducto", idProducto);
                        $("#btnCatalogoComprarAgregarAhoraAtributos").attr("data-tieneatributos", 1);
                        $("#frmSeleccionaAtributos").html(seleccionaAtributos);
                    }
                }
            }
        };
        
        $.ajax(opcionesDatos);
		ClassBlockUI.abrirBlockUIEsperePorFavor();
    },
        agregarAlCarrito: function(mostrandoAtributos, este)
	{
        if(!usuarioIdentificado && !1)
        {
            ClassBlockUI.abrirBlockUIEstandarMensaje("Tienes que identificarse para poder añadir el producto al carrito", true, false);
        }
        else
        {
            var idProducto =  este.attr("data-idProducto");
            var tieneAtributos =  este.attr("data-tieneatributos");
            var atributos = {};
            var atributosOk = true;
            if(tieneAtributos == 1)              {
                $(".ficha_producto_atributos select").each(function()
                {
                    atributos[$(this).attr("id")] = $(this).val();
                    if($(this).val() == "")
                    {
                        atributosOk=false;
                    }
                });
            }
            if(!atributosOk)
            {
                ClassBlockUI.abrirBlockUIEstandarMensaje("Elige las opciones del producto", true, false);
                return;
            }
            var data = atributos;//atributos;
            data["idProducto"] = idProducto;            
            
            if(!mostrandoAtributos)
            {
				data["cantidad"] = 1;	//porque estamos agregando desde el listado del producto
            }
            else
            {
                data["cantidad"] = $("#cantidad").val();
			}
            var opcionesDatos =
            {
                type:"POST",
                dataType:"json",
                url:"ajax/TiendaVirtualCarrito.agregar.php?CSRF="+CSRF,
                data: data,
                success: function(data, textStatus, XMLHttpRequest)
                {
                    if(data["error_number"]<0)
                    {
                        ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false);
                    }
                    else
                    {
                        //ClassBlockUI.abrirBlockUIEstandar("productoAgregado", undefined, "Producto añadido al carrito")
                        //Actualiza el numero del carrito
                        if(data["actualizaNumProductos"])
                        {
                            ClassTiendaVirtualProductos.actualizaNumProductos($("#idProducto").val());
                        }
                        //Borrarmos los atributos temporales
                        $("#frmSeleccionaAtributos").html("");
                        if(modalAtributos)
                        {
                            modalAtributos.modal("hide");
                        }
                        ClassTiendaVirtualClienteProductos.actualizarPreviewCarrito(data);
                        if(modalMensaje) {
                            modalMensaje.modal("hide");
                        }
                       // modalAtributos.modal("hide");
                        $.notify(
                        {
                            title: "
Aviso: ",
                            message: data["error_message"],
                        },
                        {
                            placement: {
                                from: "top",
                                align: "center"
                            },
                            delay: 10000
                        });
                        //ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false);
                        $(".listadoProductosCarrito").html(data["datosCarrito"]);
                        $(".precioBloqueCarrito").html(data["total"]);
                        $(".iconoEliminarCarritoBloque").unbind("click").makeTagLink(function(){ClassTiendaVirtualCarrito.mostrarMensajeBorrarCarrito($(this),2)});
                        $(".tooltipStandardHTML").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom', contentAsHTML: true});
                    }
                }
            };
            
            $.ajax(opcionesDatos);
			modalMensaje = ClassBlockUI.abrirBlockUIEsperePorFavor();
        }
	},
    actualizarPreviewCarrito: function (data) {
        $(".numProductosCarrito").addClass("carritoBlink").show();
        setTimeout( function(){$(".numProductosCarrito").removeClass("carritoBlink") }, 2000);
        $(".numProductosCarrito").html(data["numProductos"]);
        $("#previewCarritoProductos").html(data["productos"]);
        $("#previewCarritoAhorras span, #teAhorrasCarrito span").html(data["teAhorras"]);
        $("#previewCarritoSubtotal span").html(data["subtotal"]);
        $("#previewCarritoIVA span").html(data["IVA"]);
        $("#previewCarritoTotal span").html(data["total"]);
        $("#previewCarritoEnvioTitulo").html(data["textoEnvio"]);
        $("#previewCarritoEnvioProgreso span").css("width", data["progreso"]+"%");
        if (typeof tablatablaCarrito !== 'undefined' && tablatablaCarrito != null && tablatablaCarrito != undefined) {
            tablatablaCarrito.ajax.reload(null, false);
            ClassTiendaVirtualCarrito.actualizaTotales();
        }
    },
};
var ClassUsuarios =
{
	initModificarDatosPerfil: function(opciones_validacion, opciones_validacion_modificar_password, provinciaEnvio, poblacionEnvio, provinciaFacturacion, poblacionFacturacion, idUniversidad, idCurso)
    {
    	ClassUsuarios.validacionModificarPassword=$("#frmModificarContrasena").validate(opciones_validacion_modificar_password);	
        $(".btnModificarDatosPassword").unbind("click").makeTagLink(ClassUsuarios.modificarDatosPassword);    
        
        ClassUsuarios.validacionModificarDatosPerfil=$("#frmModificarDatosPerfil").validate(opciones_validacion);	    
    	$(".btnGuardarDatos").unbind("click").makeTagLink(ClassUsuarios.modificarDatosPerfil);
        preparaLugar(28, provinciaEnvio, poblacionEnvio, "form_pais_envio", "form_provincia_envio", "form_poblacion_envio");
		//preparaLugar(28, provinciaFacturacion, poblacionFacturacion, "form_pais_facturacion", "form_provincia_facturacion", "form_poblacion_facturacion");
        if(idUniversidad > 0)
        {
            actualizaCursos("form_idCurso", "form_idUniversidad", idCurso, idUniversidad,idCurso);
        }
        $("#form_idUniversidad").unbind("change").change(function()
        {
            actualizaCursos("form_idCurso", "form_idUniversidad", $("#form_idCurso").val(), $("#form_idUniversidad").val(),idCurso);
        });
        
        
        $("#form_registro_copiar_direccion").click(function()
		{	
			ClassUsuarios.actualizarDatos(true);
		});
        
        
    },
    actualizarDatos:function(actualidarSelects)
    {
    	if ($("#form_registro_copiar_direccion").val()==1)
        {
            $("#direccion_de_entrega_envio input").each(function()
            {
                if($(this).attr("id") == "form_pais_envio")
                {
                    return;
                }
                $("#"+$(this).attr("id").replace("envio","facturacion")).val($(this).val());
            });
            $("#direccion_de_entrega_envio select").each(function()
            {
                if($(this).attr("id") == "form_pais_envio")
                {
                    return;
                }
                $("#"+$(this).attr("id").replace("envio","facturacion")).val($(this).children("option:checked").html());
            });
            
            //actualizar los paises, regiones y ciudades, y dejar marcado el que corresponda
            //actualizaPaises("form_pais_facturacion", $("#form_pais_envio").val(), false, true);
            /*$("#form_pais_facturacion").val($("#form_pais_envio").val());
            if(actualidarSelects)
            {
                actualizaProvincias("form_provincia_facturacion", "form_pais_facturacion", $("#form_provincia_envio").val(), false, false, false);
                actualizaCiudades("form_poblacion_facturacion", "form_provincia_facturacion", "form_pais_facturacion", $("#form_poblacion_envio").val(),$("#form_pais_envio").val(),$("#form_provincia_envio").val(),$("#form_poblacion_envio").val());
			}      */
                        //$("#frmModificarDatosPerfil").valid();
            //$(".datosFacturacionRegistro").css("display","none");
        }	
        else
        {
            $("#direccion_de_entrega_facturacion input, #direccion_de_entrega_facturacion select").each(function()
            {
                $("#"+$(this).attr("id").replace("envio","facturacion")).removeAttr("readonly").removeClass("readonly");
            });
            //$(".datosFacturacionRegistro").css("display","flex");
        }
    
    },
    modificarDatosPerfil:function()
    {
    	if (!$("#frmModificarDatosPerfil").valid())
		{
            //ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revisa los campos porque se han detectado los siguientes errores 
"+ClassUsuarios.validacionModificarDatosPerfil.invalidMessages("
"), true, false);
            
            var errores = "Por favor, revisa los campos marcados en distinto color.";
            ClassBlockUI.abrirBlockUIEstandarMensaje(errores,true);
            
			return;
		}
		var opcionesDatos =
		{
			url: "ajax/Usuarios.modificarDatos.php?CSRF="+CSRF,
			type: "POST",
			dataType : "json",
			data : $("#frmModificarDatosPerfil").serialize(),
			success: function(data)
			{
				if(data["error_number"] < 0 )
				{
					errorMessage="";
                    var lastError = "";
					for(i in data["info"])
					{
						if(typeof(data["info"][i]) == "function")
							continue;
						
						errorMessage+=data["info"][i]+"\r\n";
						//$("#"+i).focus();
                        lastError = i;
					}
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"]+errorMessage, true, false);
				}
				else
				{
					ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true);
                   // $(".cropImgWrapper img, #imagenPerfilToCrop img").attr("src", $(".img_registroPredeterminada").attr("src"));
                   // if(idFotoPerfil>0)
                   // {
                     //   $('.img_registroPredeterminada').attr("data-id", idFotoPerfil);
                    //}
				}
			}
		}
		ClassBlockUI.abrirBlockUIEsperePorFavor();
        $.ajax(opcionesDatos);	
    },
    modificarDatosPassword: function()
	{
		if (!$("#frmModificarContrasena").valid())
		{
			ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revisa los campos porque se han detectado los siguientes errores 
"+ClassUsuarios.validacionModificarPassword.invalidMessages("
"), true, false);
			return;
		}
		
		var opcionesDatos =
        {
            url: "ajax/Usuarios.modificarPassword.php?CSRF="+CSRF,
			type: "POST",
			dataType : "json",
			data : $("#frmModificarContrasena").serialize(),
			success: function(data)
			{
				if(data["error_number"] < 0 )
				{
					ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false);
				}
				else
				{
					ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, "location");
				}
			}
        };
		ClassBlockUI.abrirBlockUIEsperePorFavor();		
        $.ajax(opcionesDatos);	
			
	},
	guardaClaveOlvidoPass: function ()
    {
        if(!$("#form_olvido").valid())
        {
            ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revisa los campos porque se han detectado los siguientes errores 
"+validacion.invalidMessages("
"), true, false);
            return;
        }
        var opciones=
        {
            url: "ajax/Usuarios.guardaClave.php?CSRF="+CSRF,
            type: "POST",
            dataType : "json",
            data: $("#form_olvido").serialize(),
            success: function(data, textStatus, XMLHttpRequest)
            {
                if (data["error_number"]<0)
                {
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false);
                }
                else
                {
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, function(){window.location="/index.php"});
                    
                }
            }
        };
        $.ajax(opciones);
		ClassBlockUI.abrirBlockUIEsperePorFavor();		
    },
	enviarOlvido: function()
    {
        var validation = $("#frmEnviarOlvido").valid();
        if(!validation)
        {
            ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revisa los campos porque se han detectado los siguientes errores 
"+validacion.invalidMessages("
"), true, false);
            return;
        }
        var opcionesDatos =
        {
            type:"POST",
            dataType:"json",
            url:"ajax/Usuarios.olvidarContrasena.php",             data: $("#frmEnviarOlvido").serialize(),
            success: function(data, textStatus, XMLHttpRequest)
            {
                if(data["error_number"]*1 == 0)
                {
                    $("#frmEnviarOlvido").clearForm();
                    //window.location = "index.php";
                }
                ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false);
            }
        };
        
        $.ajax(opcionesDatos);
		ClassBlockUI.abrirBlockUIEsperePorFavor();
    }
};
var ClassCursoUniversidadCarrito=
{
	init:function()
    {	
        $(".btnAgregarCarritoCursoUniversidad").unbind("click").makeTagLink(function(){ClassCursoUniversidadCarrito.agregarUniversidadCursoCarrito($(this))});
        $(".btnAbreEnviarPresupuesto").makeTagLink(function(){ClassCursoUniversidadCarrito.abreEnviarPDFPresupuesto($(this))});
    },
    agregarUniversidadCursoCarrito:function(e)
	{
        idUniversidadCurso = e.attr("data-idUniversidadCurso");
		ClassBlockUI.abrirBlockUIEsperePorFavor();
        $.ajax(
        {
            url: "ajax/UniversidadCursoCarrito.agregarProductos.php?idUniversidadCurso="+idUniversidadCurso+"&CSRF="+CSRF,
            type: "POST",
            dataType : "json",
            success: function(data)
            {
                if(data["error_number"] < 0)
                {
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true);
                }
                else
                {
                                        window.location = "/es/estudiantes/tienda-carrito.html";
                }
            }
        });
		//cargar de nuevo el carrito si esta abierto
	},
    abreEnviarPDFPresupuesto:function(e)
    {
       // event.preventDefault();
        //console.log(e.attr("data-idUniversidadCurso"));
        ClassBlockUI.abrirBlockUIEstandar("bloqueEnviarPresupuesto", undefined, "Envia presupuesto en pdf");
        $("#idUniversidadCurso").val(e.attr("data-iduniversidadcurso"));
    }
};
var ClassTiendaVirtualClienteCarrito=
{
	initReactivaClicks:function()
    {
        ClassTiendaVirtualClienteCarrito.refrescarTabla();
        $("body").on("click", ".btnCarrito", function()
        {
            $(".overlay, #previewCarrito").addClass("active");
            $("html, body").addClass("no-scroll");
        });
        $("#previewCarrito").on("click", "#previewCarritoCerrar", function()
        {
            $(".overlay, #previewCarrito").removeClass("active");
            $("html, body").removeClass("no-scroll");
        });
        $("body").on("click", ".itemCarritoMas", function () {
            var input = $(this).parent().find("input");
            var form = $(this).parents("form").attr("id");
            var cantidad = $(input).val();
            var nuevaCantidad = 1;
            if (!isNaN(cantidad)) {
                nuevaCantidad = cantidad*1+1;
            }
            $(input).val(nuevaCantidad);
            if (cantidad != nuevaCantidad)
                ClassTiendaVirtualClienteCarrito.actualizar("#"+form);
        });
        $("body").on("click", ".itemCarritoMenos", function () {
            var input = $(this).parent().find("input");
            var form = $(this).parents("form").attr("id");
            var cantidad = $(input).val();
            var nuevaCantidad = 1;
            if (!isNaN(cantidad) && cantidad > 1) {
                nuevaCantidad = cantidad*1-1;
            }
            $(input).val(nuevaCantidad);
            if (cantidad != nuevaCantidad)
                ClassTiendaVirtualClienteCarrito.actualizar("#"+form);
        });
        $("body").on("click", ".itemPreviewCarritoEliminar, .itemCarritoEliminar", function () {ClassTiendaVirtualClienteCarrito.eliminarLineaProducto($(this).attr("data-id"))});
        //$(".iconoEliminarCarrito, .btnActualizarCantidades").tooltipster({animation: 'grow',interactive:true, position:'bottom'});
        //$(".iconoEliminarCarrito").unbind("click").makeTagLink(function(){ClassTiendaVirtualClienteCarrito.mostrarMensajeBorrarCarrito($(this),1)});
        //$(".iconoEliminarCarritoBloque").unbind("click").makeTagLink(function(){ClassTiendaVirtualClienteCarrito.mostrarMensajeBorrarCarrito($(this),2)});
        //$(".actualizar_cantidad").unbind("keyup input").bind('keyup input', function(){ClassTiendaVirtualClienteCarrito.cantidadModificada($(this))});
        //$(".btn_actualizar").unbind("click").makeTagLink(function(){ClassTiendaVirtualClienteCarrito.actualizar()});
    },
    refrescarTabla: function ()
    {
        $(".tooltipStandardHTML").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom', contentAsHTML: true});
        $(".tooltipStandard").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom', contentAsHTML: true});
    },
    mostrarMensajeBorrarCarrito: function(e, tipo)
    {
        ClassBlockUI.abrirBlockUIConfirm("¿Estás seguro de que deseas borrar este producto de tu compra?", "Confirmar",
            function(){
            if(tipo==1)
            {
                ClassTiendaVirtualClienteCarrito.eliminarProductoCarrito(e);
            }
            else
            {
                ClassTiendaVirtualClienteCarrito.eliminarProductoCarritoBloque(e);
            }
            }, "Cancelar");
    },
    eliminarProductoCarrito:function(e)
    {			
		var idProducto = e.attr("data-idCarrito");
		if(isNaN(idProducto))
			return;
		$("#actualizar_cantidad_"+idProducto).val(0);
		ClassTiendaVirtualClienteCarrito.actualizar();
    },
    eliminarProductoCarritoBloque:function(e)
    {
        var idProducto = e.attr("data-idCarrito");
        if(isNaN(idProducto))
            return;
        ClassTiendaVirtualClienteCarrito.eliminarLineaProducto(idProducto);
    },
    cantidadModificada:function(e)
	{
		var idProducto = e.attr("data-idCarrito");
		if(isNaN(idProducto))
			return;
            
	    $("input[name='actualizar_cantidad_"+idProducto+"']").each(function(){$(this).val(e.val())});
		//$("#actualizar_cantidad_"+idProducto).val(e.val());
        
        ClassTiendaVirtualClienteCarrito.cantidadModificadaActualizarInfo(idProducto);
	},	
    cantidadModificadaActualizarInfo:function(idProducto)
	{
		if(!$("#cantidades").valid())
			return;
   		$(".pvpMostrarTotal[data-id="+idProducto+"]").each(function(){$(this).html("-");});
        $(".total_compra_numero").html(" - ");
        $(".btnActualizarCantidades[data-idCarrito="+idProducto+"]").each(function(){$(this).removeClass("ocultarActualizarCantidades")});
		$(".btnActualizarCantidades").unbind("click").makeTagLink(function(){ClassTiendaVirtualClienteCarrito.actualizar()});
        $("#btn_comprar").addClass("hidden");
        	},	
	actualizar: function(idFormulario)
	{
        idFormulario = idFormulario == undefined ? "#cantidades" : idFormulario;
        if(!$(idFormulario).valid())
		{
	        ClassBlockUI.abrirBlockUIEstandarMensaje("", true);
			return;
		}
		ClassBlockUI.abrirBlockUIEsperePorFavor();
        $.ajax(
        {
            url: "ajax/TiendaVirtualCarrito.actualizarCantidades.php?tipoUsuario=2",
            type: "POST",
            dataType : "json",
            data : $(idFormulario).serialize(),
            success: function(data)
            {
                if(data["error_number"] < 0)
                {
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true);
                }
                else
                {
                    ClassTiendaVirtualClienteCarrito.actualizarPreviewCarrito(data);
                    $(".modal").modal("hide");
                    //window.location = window.location;
                }
            }
        });
		//cargar de nuevo el carrito si esta abierto
	},
    eliminarLineaProducto:function(idProducto)
    {
        $.ajax(
        {
            url: "ajax/TiendaVirtualCarrito.eliminarProducto.php?tipoUsuario=2&idProducto="+idProducto,
            type: "POST",
            dataType : "json",
            success: function(data)
            {
                if(data["error_number"] < 0)
                {
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true);
                }
                else
                {
                    ClassTiendaVirtualClienteCarrito.actualizarPreviewCarrito(data);
                    $(".modal").modal("hide");
                    //window.location = window.location;
                }
            }
        });
        ClassBlockUI.abrirBlockUIEsperePorFavor();
        //cargar de nuevo el carrito si esta abierto
    },
    renderTablaCarrito: function(data, type, row, meta){
										
        if(type === 'display'){
            
          var api = new $.fn.dataTable.Api(meta.settings);
          var $el = $('input, select, textarea', api.cell({ row: meta.row, column: meta.col }).node());
          //var $html = $(data).wrap('
').parent();
          var $html = $("
").html(data);
          if($el.prop('tagName') === 'INPUT'){
             $('input', $html).attr('value', $el.val());
             if($el.prop('checked')){
                $('input', $html).attr('checked', 'checked');
             }
          } else if ($el.prop('tagName') === 'TEXTAREA'){
             $('textarea', $html).html($el.val());
          } else if ($el.prop('tagName') === 'SELECT'){
             $('option:selected', $html).removeAttr('selected');
             $('option', $html).filter(function(){
                return ($(this).attr('value') === $el.val());
             }).attr('selected', 'selected');
          }
          data = $html.html();
          
          //console.log("Antes habia: "+data);
          //console.log("Ahroa quiere poner: "+$html.html());
        }
          
        return data;
    },
    actualizarPreviewCarrito: function (data) {
        $("#previewCarritoProductos").html(data["productos"]);
        $("#btnAbreCarrito .contadorNumItems").html(data["numProductos"]);
        $("#previewCarritoAhorras span").html(data["teAhorras"]);
        $("#previewCarritoSubtotal span").html(data["subtotal"]);
        $("#previewCarritoIVA span").html(data["IVA"]);
        $("#previewCarritoTotal span").html(data["total"]);
        $("#previewCarritoEnvioTitulo").html(data["textoEnvio"]);
        $("#previewCarritoEnvioProgreso span").css("width", data["progreso"]+"%");
        if(data["gastosEnvio"][1]*1==0)
        {
            $("#precioEntrega_1").html("
¡Gratis!");
        }
        else
        {
            $("#precioEntrega_1").html("
"+data["gastosEnvio"][3]+"€ ("+data["gastosEnvio"][0]+"% IVA incluido)");
        }
        if (typeof tablatablaCarrito !== 'undefined' && tablatablaCarrito != null && tablatablaCarrito != undefined) {
            tablatablaCarrito.ajax.reload(null, false);
        }
        if (typeof tablatablaTotales !== 'undefined' && tablatablaTotales != null && tablatablaTotales != undefined) {
            tablatablaTotales.ajax.reload(null, false);
        }
    },
    actualizaTotales: function ()
    {
        var transporte = $("input[name=formTransporte]:checked").val();
        var pais = $("#formEnvioPais").val();
        var provincia = $("#formEnvioProvincia").val();
        tablatablaTotales.ajax.url('ajax/TiendaVirtualCarrito.getTotales.php?tipoUsuario=2&CSRF='+CSRF+'&pais='+pais+'&provincia='+provincia+"&idTransporte="+transporte).load();
    }
};
var modalAtributos=false;
var modalMensaje = false;
var ClassTiendaVirtualClienteProductos =
{
	actualizaNumProductos:function(idProducto)
	{
		var num_productos = $(".num_productos:eq(0)").text().replace(/[^0-9]/g, "")*1;
		if(num_productos+1 == 1)
		{
			$(".num_productos").html("1 Producto");
		}
		else
		{
			$(".num_productos").html((num_productos+1)+" Productos");
		}
		
	},
    initAgregarProductoCarrito:function()
    {
		$("#cantidad").unbind("keyup").keyup(function()
        {
			ClassTiendaVirtualClienteProductos.actualizarTotal();
        });
        $("#cantidad").pressEnter(function(){
            return;
        });
		$(".ficha_producto_atributos select").change(function()
		{
			ClassTiendaVirtualClienteProductos.actualizarTotal($(this).attr("id"), $(this).find("option:selected").attr("data-suplemento")*1);
		});
		$(".btnAgregarCarrito").unbind("click").makeTagLink(function()
        {
        	ClassTiendaVirtualClienteProductos.agregarAlCarritoCompruebaAtributos(true, $(this))
        });
        $(".btnAgregarCarritoListado").unbind("click").makeTagLink(function()
        {
            ClassTiendaVirtualClienteProductos.agregarAlCarritoCompruebaAtributos(false, $(this))
        });
    },
    actualizarTotal:function(idAtributo, valorAtributo)
	{
		if(idAtributo!=undefined)
		{
			opciones[idAtributo] = valorAtributo;
		}
		//le anadido dividir entre 100 para que lo haga bien, sino suma decimales
        var subtotal = ($("#ficha_producto_precio").val()*1);
        var subtotal_sin_iva = ($("#ficha_producto_precio_sin_iva").val()*1);
        var subtotal_original = ($("#ficha_producto_precio_original").val()*1);
		var subtotal_original_sin_iva = ($("#ficha_producto_precio_original_sin_iva").val()*1);
		//console.log(subtotal, subtotal_original,subtotal_sin_iva, subtotal_original_sin_iva);
		for(var index in opciones)
		{
			if(index.match(/atributo_*/i) == null)
				continue;
			
			subtotal += opciones[index];
            subtotal_original += opciones[index];
            subtotal_sin_iva += opciones[index];                    subtotal_original_sin_iva += opciones[index];   		}
		if(!isNaN($("#cantidad").val()*1))
		{
			$("#productos_detalles_subtotal .tituloPrecioOferta .importeOferta").html_formated(($("#cantidad").val()*subtotal_sin_iva), {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
            $("#productos_detalles_subtotal_original .tituloPrecio .precio").html_formated(($("#cantidad").val()*subtotal_original_sin_iva), {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
            $("#productos_detalle_iva_incluido .importeIVAIncluido").html_formated(($("#cantidad").val()*subtotal), {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
		}
		else
		{
			$("#productos_detalles_subtotal .tituloPrecioOferta .importeOferta").html_formated(subtotal_sin_iva, {symbol: '€'});
  			$("#productos_detalles_subtotal_original .tituloPrecio .precio").html_formated(subtotal_original_sin_iva, {symbol: '€'});
            $("#productos_detalle_iva_incluido .importeIVAIncluido").html_formated(subtotal, {numberOfDecimals: 2,decimalSeparator: ',',thousandSeparator: '.',symbol: '€'});
        }
	},
        agregarAlCarritoCompruebaAtributos: function(mostrandoAtributos, este){
        
                if(!usuarioIdentificado && !1)
        {
            ClassBlockUI.abrirBlockUIEstandarMensaje("Tienes que identificarse para poder añadir el producto al carrito", true, false);
            return;
        }
        
    	var tieneAtributos =  este.attr("data-tieneAtributos");     	if(mostrandoAtributos || !tieneAtributos)
        {
       	    ClassTiendaVirtualClienteProductos.agregarAlCarrito(mostrandoAtributos, este);
        }
        else
        {
       	    ClassTiendaVirtualClienteProductos.mostrarAtributosParaAgregarAlCarrito(este);
        }
    },
    mostrarAtributosParaAgregarAlCarrito: function(este){
		idProducto =  este.attr("data-idProducto");
        var opcionesDatos =
        {
            type:"POST",
            dataType:"json",
            url:"ajax/TiendaVirtualCarrito.seleccionaAtributos.php?CSRF="+CSRF,
            data: 
            {
                idProducto:idProducto
            },
            success: function(data, textStatus, XMLHttpRequest)
            {
                if(data["error_number"]<0)
                {
                    ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true);
                }
                else
                {
                	if(Object.keys(data["atributos"]).length == 0)
                    {
	                    ClassTiendaVirtualClienteProductos.agregarAlCarrito(false, este);
                    }
                    else
                    {
	                    modalAtributos=ClassBlockUI.abrirBlockUIEstandar("selectAtributos", undefined, "");
                        var seleccionaAtributos = "
";
                        for(var idAtributo in data["atributos"])
                        {
                            seleccionaAtributos+='';
                            seleccionaAtributos+='';							
                        }
                        seleccionaAtributos+='
';
						$("#btnCatalogoComprarAgregarAhoraAtributos").attr("data-idProducto", idProducto);
                        $("#btnCatalogoComprarAgregarAhoraAtributos").attr("data-tieneatributos", 1);
                        $("#frmSeleccionaAtributos").html(seleccionaAtributos);
                    }
                }
            }
        };
        
        $.ajax(opcionesDatos);
		ClassBlockUI.abrirBlockUIEsperePorFavor();
    },
        agregarAlCarrito: function(mostrandoAtributos, este, comprobarStock)
	{
        if(!usuarioIdentificado && !1)
        {
            ClassBlockUI.abrirBlockUIEstandarMensaje("Tienes que identificarse para poder añadir el producto al carrito", true, false);
        }
        else
        {
            if(comprobarStock == true || comprobarStock == undefined) {
                if (!ClassTiendaVirtualPedidos.compruebaStock(este, false, mostrandoAtributos)) {
                    return;
                }
            }
            este = $(este);
            var idProducto =  este.attr("data-idProducto");
            var tieneAtributos =  este.attr("data-tieneatributos");
            var atributos = {};
            var atributosOk = true;
            if(tieneAtributos == 1)              {
                $(".ficha_producto_atributos select").each(function()
                {
                    atributos[$(this).attr("id")] = $(this).val();
                    if($(this).val() == "")
                    {
                        atributosOk=false;
                    }
                });
            }
            if(!atributosOk)
            {
                ClassBlockUI.abrirBlockUIEstandarMensaje("Elige las opciones del producto", true, false);
                return;
            }
            var data = atributos;//atributos;
            data["idProducto"] = idProducto;            
            
            if(!mostrandoAtributos)
            {
				data["cantidad"] = 1;	//porque estamos agregando desde el listado del producto
            }
            else
            {
                data["cantidad"] = $("#cantidad").val();
			}
            var formData = new FormData($('#formProductosSecundarios')[0]);
	        
            var opcionesDatos =
            {
                type:"POST",
                dataType:"json",
                url:"ajax/TiendaVirtualClienteCarrito.agregar.php?CSRF="+CSRF,
                processData: false,
                contentType: false,
                data: formData,
                success: function(data, textStatus, XMLHttpRequest)
                {
                    if(data["error_number"]<0)
                    {
                        ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false);
                    }
                    else
                    {
                        //ClassBlockUI.abrirBlockUIEstandar("productoAgregado", undefined, "Producto añadido al carrito")
                        //Actualiza el numero del carrito
                        if(data["actualizaNumProductos"])
                        {
                            ClassTiendaVirtualClienteProductos.actualizaNumProductos($("#idProducto").val());
                        }
                        //Borrarmos los atributos temporales
                        $("#frmSeleccionaAtributos").html("");
                        if(modalAtributos)
                        {
                            modalAtributos.modal("hide");
                        }
                        ClassTiendaVirtualClienteProductos.actualizarPreviewCarrito(data);
                        if(modalMensaje) {
                            modalMensaje.modal("hide");
                        }
                       // modalAtributos.modal("hide");
                        $.notify(
                        {
                            title: "
Aviso: ",
                            message: data["error_message"],
                        },
                        {
                            placement: {
                                from: "top",
                                align: "center"
                            },
                            delay: 10000,
                            //timer: 100000
                        });
                        //ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false);
                        $(".listadoProductosCarrito").html(data["datosCarrito"]);
                        $(".precioBloqueCarrito").html(data["total"]);
                        $(".iconoEliminarCarritoBloque").unbind("click").makeTagLink(function(){ClassTiendaVirtualCarrito.mostrarMensajeBorrarCarrito($(this),2)});
                        $(".tooltipStandardHTML").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom', contentAsHTML: true});
                    }
                }
            };
            
            $.ajax(opcionesDatos);
			modalMensaje = ClassBlockUI.abrirBlockUIEsperePorFavor();
        }
	},
    actualizarPreviewCarrito: function (data) {
        $(".numProductosCarrito").addClass("carritoBlink").show();
        setTimeout( function(){$(".numProductosCarrito").removeClass("carritoBlink") }, 2000);
        $(".numProductosCarrito").html(data["numProductos"]);
        $("#previewCarritoProductos").html(data["productos"]);
        $("#previewCarritoAhorras span, #teAhorrasCarrito span").html(data["teAhorras"]);
        $("#previewCarritoSubtotal span").html(data["subtotal"]);
        $("#previewCarritoIVA span").html(data["IVA"]);
        $("#previewCarritoTotal span").html(data["total"]);
        $("#previewCarritoEnvioTitulo").html(data["textoEnvio"]);
        $("#previewCarritoEnvioProgreso span").css("width", data["progreso"]+"%");
        if (typeof tablatablaCarrito !== 'undefined' && tablatablaCarrito != null && tablatablaCarrito != undefined) {
            tablatablaCarrito.ajax.reload(null, false);
            ClassTiendaVirtualClienteCarrito.actualizaTotales();
        }
    },
};