const navText = [ '', '' ]; const datepickerES = { clearText: 'Borrar', clearStatus: '', closeText: 'Cerrar', closeStatus: 'Cerrar sin modificar', prevText: '<Ant', prevStatus: 'Ver el mes anterior', nextText: 'Sig>', nextStatus: 'Ver el mes siguiente', currentText: 'Hoy', currentStatus: 'Ver el mes actual', monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'], monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'], monthStatus: 'Ver otro mes', yearStatus: 'Ver otro año', weekHeader: 'Sm', weekStatus: '', dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb'], dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'], dayStatus: 'Usar DD como primer día de la semana', dateStatus: 'Seleccionar DD, MM de', dateFormat: 'dd/mm/yy', firstDay: 1, initStatus: 'Seleccionar fecha', isRTL: false }; class Web { static inputImporteClass = ".input-importe"; static init() { ClassUsuarios.init(); Web.initDynamicBG(); $(document).ready(function (e) { Web.markUIReady(); Web.initPasswordToggles(); Web.initImporteInputs(); Web.initPreviewApuntes(); }); } static initInicio() { } static markUIReady() { const enableTransitions = function () { $("body").addClass("ui-ready"); }; if (window.requestAnimationFrame) { window.requestAnimationFrame(function () { window.requestAnimationFrame(enableTransitions); }); return; } setTimeout(enableTransitions, 30); } static initDynamicBG() { $(document).ready(function () { new WOW( { boxClass: "dynamic-bg", //offset: 200, callback: function (box) { $(box).addClass("loaded"); }, } ).init(); }); } static initPreviewApuntes() { const selector = ".itemContenidoApunte[data-preview]"; let preview = $(".preview-apunte-flotante"); if (preview.length === 0) { preview = $('
'); $("body").append(preview); } const previewImg = preview.find("img"); function posicionar(element) { const rect = element.getBoundingClientRect(); const margen = 12; const ancho = preview.outerWidth(); const alto = preview.outerHeight(); const left = Math.min(Math.max(rect.left, margen), window.innerWidth - ancho - margen); let top = rect.bottom + margen; if (top + alto > window.innerHeight - margen) { top = Math.max(margen, rect.top - alto - margen); } preview.css({ left: left + "px", top: top + "px", }); } $("body") .off("mouseenter.previewApuntes focusin.previewApuntes mousemove.previewApuntes mouseleave.previewApuntes focusout.previewApuntes", selector) .on("mouseenter.previewApuntes focusin.previewApuntes", selector, function () { const rutaPreview = $(this).attr("data-preview"); if (!rutaPreview) { return; } previewImg.attr("src", rutaPreview); preview.addClass("visible"); posicionar(this); }) .on("mousemove.previewApuntes", selector, function () { posicionar(this); }) .on("mouseleave.previewApuntes focusout.previewApuntes", selector, function () { preview.removeClass("visible"); }); $(window).off("scroll.previewApuntes resize.previewApuntes").on("scroll.previewApuntes resize.previewApuntes", function () { preview.removeClass("visible"); }); } static initPasswordToggles(scope) { const showLabel = "Mostrar contrase\u00f1a"; const hideLabel = "Ocultar contrase\u00f1a"; const $scope = scope ? $(scope) : $(document); $scope.find("input.password-toggle").each(function (index, element) { const $input = $(element); if (!$input.is('[type="password"], [type="text"]')) { return; } if (!$input.attr("id")) { $input.attr("id", "password-toggle-" + index + "-" + Date.now()); } if (!$input.parent().hasClass("password-toggle-wrap")) { $input.wrap('
'); } let $button = $input.siblings(".password-toggle-button"); if (!$button.length) { $button = $(''); $input.after($button); } const isVisible = $input.attr("type") === "text"; $button .toggleClass("is-visible", isVisible) .attr("aria-controls", $input.attr("id")) .attr("aria-label", isVisible ? hideLabel : showLabel) .attr("aria-pressed", isVisible ? "true" : "false") .attr("title", isVisible ? hideLabel : showLabel); }); if (!Web.passwordToggleEventsBound) { Web.passwordToggleEventsBound = true; $(document).on("click", ".password-toggle-button", function (event) { event.preventDefault(); const $button = $(this); const $input = $button.siblings("input.password-toggle").first(); if (!$input.length) { return; } const isVisible = $input.attr("type") === "text"; const nextType = isVisible ? "password" : "text"; const nextLabel = isVisible ? showLabel : hideLabel; $input.attr("type", nextType).trigger("focus"); $button .toggleClass("is-visible", !isVisible) .attr("aria-label", nextLabel) .attr("aria-pressed", !isVisible ? "true" : "false") .attr("title", nextLabel); }); if (window.MutationObserver) { Web.passwordToggleObserver = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { $(mutation.addedNodes).each(function () { if (this.nodeType === 1) { Web.initPasswordToggles(this); } }); }); }); Web.passwordToggleObserver.observe(document.body, { childList: true, subtree: true }); } } } static notify(msg, error = false) { const type = error ? "danger" : "success"; $.notify({ message: msg, }, { type: type, placement: { from: "bottom", align: "right" }, delay: 2000 }); } static limpiarImporte(valor) { let valorLimpio = (valor || "").replace(/€/g, "").replace(/\s+/g, ""); valorLimpio = valorLimpio.replace(/[^0-9,]/g, ""); const partes = valorLimpio.split(","); if (partes.length > 1) { const parteEntera = partes.shift(); const parteDecimal = partes.join("").substring(0, 2); valorLimpio = parteEntera + "," + parteDecimal; } return valorLimpio; } static formatearImporte(valor) { const valorLimpio = Web.limpiarImporte(valor); return valorLimpio ? valorLimpio + "€" : ""; } static limpiarComaFinalImporte(valor) { const valorLimpio = Web.limpiarImporte(valor); return valorLimpio.endsWith(",") ? valorLimpio.slice(0, -1) : valorLimpio; } static posicionarCursorImporte(input) { if (!input || typeof input.setSelectionRange !== "function") { return; } const posicionCursor = Web.limpiarImporte(input.value).length; input.setSelectionRange(posicionCursor, posicionCursor); } static corregirCursorImporte(input) { if (!input || typeof input.setSelectionRange !== "function") { return; } const posicionMaxima = Web.limpiarImporte(input.value).length; const posicionActual = input.selectionStart ?? posicionMaxima; if (posicionActual > posicionMaxima) { input.setSelectionRange(posicionMaxima, posicionMaxima); } } static initImporteInputs() { if (Web.importeInputsEventsBound) { return; } Web.importeInputsEventsBound = true; $("body").on("keydown", Web.inputImporteClass, function (event) { const teclasPermitidas = [ "Backspace", "Delete", "Tab", "Enter", "Escape", "ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "Home", "End" ]; if (event.ctrlKey || event.metaKey) { return; } if (teclasPermitidas.includes(event.key)) { return; } if (/^[0-9]$/.test(event.key)) { return; } if (event.key === ",") { const valorLimpio = Web.limpiarImporte($(this).val()); if (!valorLimpio.includes(",")) { return; } } event.preventDefault(); }); $("body").on("input", Web.inputImporteClass, function () { $(this).val(Web.formatearImporte($(this).val())); Web.posicionarCursorImporte(this); }); $("body").on("focus", Web.inputImporteClass, function () { $(this).val(Web.formatearImporte($(this).val())); Web.posicionarCursorImporte(this); }); $("body").on("click", Web.inputImporteClass, function () { Web.corregirCursorImporte(this); }); $("body").on("blur", Web.inputImporteClass, function () { const valorLimpio = Web.limpiarComaFinalImporte($(this).val()); $(this).val(valorLimpio ? valorLimpio + "€" : ""); }); } static initTexto() { $("document").ready(function () { //$(".textoSeccion a").attr("target", "_blank"); $(".textoSeccion a[href^='tel']").removeAttr("target"); $(".textoSeccion img[style^='float: left'], .textoSeccion img[style^='float:left']").addClass("margin-right-20 margin-bottom-20 img-float"); $(".textoSeccion img[style^='float: right'], .textoSeccion img[style^='float:right']").addClass("margin-left-20 margin-bottom-20 img-float"); $(".textoSeccion img:not(.imagenDerecha)").addClass("img-fluid").css("max-width", "100%").css("height", "auto").css("object-fit", "cover"); }); } static initContacto() { $(document).ready(function (e) { $("#btnEnviarContacto").click(enviarFormulario); }); function enviarFormulario(event) { event.preventDefault(); var extraMsg = ""; if (!$("#politica").is(":checked")) { extraMsg = $("#politica").attr("title"); } Utils.sendStandardAjax("formContacto", "https://www.themap.es/ajax/Contacto.enviar.php", { extraErroresForm: extraMsg, successCallback: null, resetFormOnSuccess: true }); } } static refrescaTabla(idTabla) { $(".tooltipStandard").not(".tooltipstered").tooltipster({ animation: 'grow', interactive: true, position: 'bottom', contentAsHTML: true }); $(".inputIconLupa, .inputMostrar, #filtros").removeClass("d-none"); $(".form-control").removeClass().addClass("form-control-b"); const elementFiltros = $("#filtros-tabla.d-none"); if (elementFiltros.length > 0) { $(".table-header-btns").append(elementFiltros).removeClass("d-none"); elementFiltros.removeClass("d-none"); } else { if ($(".table-header-btns #filtros-tabla").length == 0) $(".table-header-btns").addClass("d-none"); } const elementFiltros2 = $("#filtros-tabla-mid.d-none"); if (elementFiltros2.length > 0) { $(".header-tabla-mid").removeClass("d-none").append(elementFiltros2); elementFiltros2.removeClass("d-none"); } var numItems = 0; let tabla = eval("tabla" + idTabla); if (typeof tabla != "undefined") { numItems = tabla.page.info().recordsDisplay; } else if ($.fn.dataTable.isDataTable('#' + idTabla)) { tabla = $('#' + idTabla).DataTable(); numItems = tabla.page.info().recordsDisplay; } let itemsMostrando = $("#" + idTabla + "_length select").length > 0 ? $("#" + idTabla + "_length select").val() : 10; if (numItems > itemsMostrando) { $("#" + idTabla + "_wrapper .pagination-footer").removeClass("opacity-0"); } else { $("#" + idTabla + "_wrapper .pagination-footer").addClass("opacity-0"); } //Formato movil const numColumnaMv = 1; const numColumnas = tabla.columns()[0].length; if ($("#" + idTabla).hasClass("tablaMovil")) { const w = $(window).outerWidth(); if (w <= 767) //Ocultar { for (let i = 0; i < numColumnas; i++) { tabla.column(i).visible((numColumnaMv == i ? true : false)); } } else //Mostrar { for (let i = 0; i < numColumnas; i++) { let txt = $(tabla.columns(i).header()).text(); tabla.column(i).visible((txt == "oculto" || numColumnaMv == i ? false : true)); } } } } static initPhotoSwipeGallery($gallery) { const $links = $gallery.find('a'); // Construcción del dataSource una sola vez const dataSource = $links.map(function () { const $el = $(this); return { src: $el.attr('href'), width: parseInt($el.data('width'), 10), height: parseInt($el.data('height'), 10) }; }).get(); $gallery.on('click', 'a', function (e) { e.preventDefault(); const index = $links.index(this); const pswp = new PhotoSwipe({ dataSource: dataSource, index: index, bgOpacity: 0.9, showHideAnimationType: 'zoom' }); pswp.init(); }); } } function findPos(obj) { var curtop = 0; if (obj.offsetParent) { do { curtop += obj.offsetTop; } while (obj = obj.offsetParent); return [curtop]; } } function isEmail(email) { var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; return regex.test(email); } $(document).ready(function () { if ($.fn.dataTable != undefined) { $.fn.dataTable.ext.errMode = function (settings, helpPage, message) { $.notify( { title: "Error: ", message: "Se ha producido un error inesperado", }, { type: 'danger', placement: { from: "top", align: "center" }, delay: 10000 }); }; $.extend($.fn.dataTable.defaults, { "language": { "colvis": "", "sProcessing": "Procesando...", "sLengthMenu": "Filas por página: _MENU_", "sZeroRecords": "No se han encontrado resultados", "sEmptyTable": "Sin datos todavía", "sInfo": "_START_-_END_ de _TOTAL_", "sInfoEmpty": "Todavía no hay datos", "sInfoFiltered": "()", "sSearchPlaceholder": "Buscar", "sInfoPostFix": "", "sSearch": "", "sUrl": "", "oPaginate": { //"sFirst": " ", "sPrevious": '', "sNext": '', //"sLast": " " } } }); } }); function preparaLugar(pais, provincia, poblacion, idInputPais, idInputProvincia, idInputLocalidad) { if (pais > 0) { if (provincia > 0) provincia = (provincia + "").padStart(2, "0"); actualizaProvincias(idInputLocalidad, idInputProvincia, idInputPais, provincia, pais, provincia, poblacion, undefined); } $('#' + idInputPais).on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { //console.log(e, clickedIndex, isSelected, previousValue, $(this).val(), $('#frmServicioProvincia').val(), $('#frmServicioProvincia').selectpicker("val")); actualizaProvincias(idInputLocalidad, idInputProvincia, idInputPais, provincia, undefined, undefined, undefined, undefined, undefined, undefined, true); }); /*$("body").on("change", "#"+idInputPais, function() { actualizaProvincias(idInputLocalidad,idInputProvincia, idInputPais, provincia); });*/ if (provincia > 0) { if (poblacion > 0) poblacion = (poblacion + "").padStart(3, "0"); actualizaCiudades(idInputLocalidad, idInputProvincia, idInputPais, poblacion, pais, provincia, poblacion, $("#" + idInputProvincia).val() * 1); } $('#' + idInputProvincia).on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { //console.log(e, clickedIndex, isSelected, previousValue, $(this).val(), $('#frmServicioProvincia').val(), $('#frmServicioProvincia').selectpicker("val")); if (isSelected === null) return; $('#' + idInputProvincia).removeClass("error"); actualizaCiudades(idInputLocalidad, idInputProvincia, idInputPais, undefined, $("#" + idInputPais).val() * 1, $("#" + idInputProvincia).val() * 1); }); $('#' + idInputLocalidad).on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected === null) return; $('#' + idInputLocalidad).removeClass("error"); }); } function actualizaProvincias(idCampoLocalidad, idCampoRegion, idCampoPais, idRegionPreEstablecida, forceIdPais, forceIdRegion, forceIdLocalidad, onFinish, textoSelect, textoLoading, actualizarLocalidad) { if (forceIdPais == undefined) { forceIdPais = $("#" + idCampoPais).val(); } if (forceIdRegion == undefined) { forceIdRegion = $("#" + idCampoRegion).val(); } if (forceIdLocalidad == undefined) { forceIdLocalidad = $("#" + idCampoLocalidad).val(); } if (textoSelect == undefined) { //textoSelect = ""; textoSelect = ""; } //var textoSelectLoc = "Localidad"; var textoSelectLoc = ""; if (textoLoading == undefined) { textoLoading = ""; } var data = {idPais: forceIdPais}; $("#" + idCampoRegion).empty(); $("#" + idCampoRegion).append(""); $("#" + idCampoRegion).selectpicker("refresh"); $("#" + idCampoRegion).selectpicker('val', 0); if (actualizarLocalidad) { $("#" + idCampoLocalidad).empty(); $("#" + idCampoLocalidad).append(""); $("#" + idCampoLocalidad).selectpicker("refresh"); $("#" + idCampoLocalidad).selectpicker('val', 0); } var returned = $.ajax( { url: "https://www.themap.es/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(""); } $("#" + idCampoRegion).selectpicker("refresh"); if (idRegionPreEstablecida != undefined && idRegionPreEstablecida != "") { $("#" + idCampoRegion).val(idRegionPreEstablecida); } else { $("#" + idCampoRegion).val(0); } $("#" + idCampoRegion).selectpicker("refresh"); if (actualizarLocalidad) { $("#" + idCampoLocalidad).empty(); $("#" + idCampoLocalidad).append(""); $("#" + idCampoLocalidad).val(0); $("#" + idCampoLocalidad).selectpicker("refresh"); } 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 = ""; textoSelect = ""; } if (textoLoading == undefined) { textoLoading = ""; } var data = { idPais: forceIdPais, idRegion: forceIdRegion }; $("#" + idCampoLocalidad).empty(); $("#" + idCampoLocalidad).append(""); $("#" + idCampoLocalidad).selectpicker("refresh"); $("#" + idCampoLocalidad).selectpicker('val', 0); var returned = $.ajax( { url: "https://www.themap.es/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(""); } $("#" + idCampoLocalidad).selectpicker("refresh"); if (idLocalidadPreEstablecida != undefined) { $("#" + idCampoLocalidad).val(idLocalidadPreEstablecida); } else { $("#" + idCampoLocalidad).val(0); } $("#" + idCampoLocalidad).selectpicker("refresh"); 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").length>0){$("body").addClass("modal-open")} if(contenedorIDAMostrar == undefined || $("#"+contenedorIDAMostrar).length == 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 = ''+ ''; $("body").append(message); var modal = $("#"+blockUIId); modal.find(".modal-body").append(node); modal.find(".modal-dialog").addClass("fadeIn"); modal.on('hidden.bs.modal', function () { ClassBlockUI.restaurarElemento(); }) var myModal = new bootstrap.Modal($(modal)[0], { keyboard: false }) myModal.show(); if(accionCerrar==undefined) //boton cerrar tiene accion por defecto { $("#"+blockUIId+" .btnCerrarModalEquis").click(function(){ myModal.hide(); if($(".modal").length>0){$("body").addClass("modal-open")} }); } else if(accionCerrar==false) //oculta el boton cerrar { $("#"+blockUIId+" .btnCerrarModalEquis").hide(); } else //boton cerrar con accion especial { $("#"+blockUIId+" .btnCerrarModalEquis").click(accionCerrar); } return modal; }, abrirBlockUIEstandarMensaje: function(mensaje, isAlertOrButtons, onClose, extraClass, title) { $(".modalAutoHide").modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} var blockUIId="blockUI_"+new Date().getTime(); extraClass = extraClass == null || extraClass == undefined ? "" : extraClass; //modal-lg title = title == null || title == undefined ? "Aviso" : title; if(isAlertOrButtons==undefined) isAlertOrButtons=false; if(onClose==undefined) onClose=false; var botonera = ""; var botoneraEspecial = false; if(isAlertOrButtons === false) { botonera = ""; } else if (isAlertOrButtons === true) { let textoBoton = "Aceptar"; botonera = `
`; } else { botoneraEspecial = true; botonera = "
"; for(var index in isAlertOrButtons) { botonera += " "+isAlertOrButtons[index]["text"]+" "; } botonera += "
"; } var message = ''; message += ''; $("body").append(message); var modal = $("#"+blockUIId); modal.find(".modal-dialog").css("animation-duration", "500ms").addClass("zoomIn"); modal.on('hidden.bs.modal', function () { modal.remove(); }) var myModal = new bootstrap.Modal($(modal)[0], { keyboard: false }); myModal.show(); //Acciones de los botones especiales if(botoneraEspecial) { for(var index in isAlertOrButtons) { if(isAlertOrButtons[index]["action"] == "close") { isAlertOrButtons[index]["action"] = function(){ myModal.hide(); if($(".modal").length>0){$("body").addClass("modal-open")} }; } $("#"+blockUIId+" ."+index).unbind("click").click(isAlertOrButtons[index]["action"]); } } var fnOnClose; if(onClose==false) { fnOnClose = function(){ myModal.hide(); if($(".modal").length>0){$("body").addClass("modal-open")} }; } else if (typeof onClose === "function") { fnOnClose = function(){onClose()}; } else if (onClose == "location") { fnOnClose = function(){window.location.reload()}; } else if (onClose == "back") { fnOnClose = function(){history.go(-1);}; } else { fnOnClose = function(){window.location = onClose}; } $("#"+blockUIId+" .btnCerrarBlockUIAlert, #"+blockUIId+" .btnCerrarModalEquis").unbind("click").click(fnOnClose); return modal; }, abrirBlockUIConfirm: function(mensaje, textoAceptar, accionAceptar, textoCancelar, accionCancelar, extraClass, title) { accionCancelar = accionCancelar == undefined ? "close" : accionCancelar; extraClass = extraClass == null || extraClass == undefined ? "" : extraClass; var buttons = { "btnAceptarBUI_CONFIRM": { "text": textoAceptar, "action": accionAceptar }, "btnCancelarBUI_CONFIRM": { "text": textoCancelar, "action": accionCancelar } }; return ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje, buttons, false, extraClass, title); }, abrirBlockUIEsperePorFavor: function(mensaje) { if(mensaje == undefined){ mensaje = "
Espere por favor...
"; }; return ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje, undefined, false, "modalEspere"); } }; class ClassUsuarios { static init() { $(document).ready(function () { $("body").on("click", "#btn-mi-cuenta, .btn-cerrar-menu-mi-cuenta", function (e) { $("#menu-mi-cuenta").toggleClass("open"); }); ClassUsuarios.initResumenActividad(); }) } static initResumenActividad() { const duracion = 1000; const tiempoPorPaso = 16; const numeroPasos = Math.max(1, Math.ceil(duracion / tiempoPorPaso)); function parsearObjetivo(valorOriginal) { const texto = String(valorOriginal || "").trim(); const tieneEuro = texto.includes("\u20AC"); const textoLimpio = texto.replace(/[^\d,.-]/g, ""); const textoNormalizado = textoLimpio.replace(",", "."); const valor = parseFloat(textoNormalizado); const decimales = textoNormalizado.includes(".") ? textoNormalizado.split(".").pop().length : 0; return { valor: Number.isFinite(valor) ? valor : 0, decimales, tieneEuro }; } function formatearValor(valor, decimales, tieneEuro) { const numeroFormateado = valor.toLocaleString("es-ES", { minimumFractionDigits: decimales, maximumFractionDigits: decimales }); return tieneEuro ? `${numeroFormateado}\u20AC` : numeroFormateado; } $(".item-resumen-actividad-cantidad[data-objetivo]").each(function () { const contador = this; const {valor: objetivo, decimales, tieneEuro} = parsearObjetivo(contador.getAttribute("data-objetivo")); const inicio = performance.now(); const incremento = objetivo / numeroPasos; if (objetivo <= 0) { contador.textContent = formatearValor(0, decimales, tieneEuro); return; } function animar(ahora) { const tiempoTranscurrido = ahora - inicio; const pasoActual = Math.floor(tiempoTranscurrido / tiempoPorPaso); const valorActual = Math.min(objetivo, pasoActual * incremento); contador.textContent = formatearValor(valorActual, decimales, tieneEuro); if (tiempoTranscurrido < duracion) { requestAnimationFrame(animar); } else { contador.textContent = formatearValor(objetivo, decimales, tieneEuro); } } requestAnimationFrame(animar); }); } static initLogin(formId) { $(document).ready(function () { $(".btn-iniciar-sesion").on("click", function () { ClassBlockUI.abrirBlockUIEstandar("modal-login", undefined, "Acceso", "modal356"); }); $("#btn-acceder").on("click", login); $("#frm-login-contrasena").pressEnter(login); function login() { Utils.sendStandardAjax(formId, "https://www.themap.es/ajax/Usuarios.login.php", {successCallback: "data-location"}); } }); } static initRegistro(formId) { $(document).ready(function () { const formElement = $("#" + formId); var opciones_validacion_registro = { showLabels: false, rules: { "contrasena": { minlength: 6, required: true }, "repite-contrasena": { minlength: 6, required: true, equalTo: "#frm-registro-contrasena" }, "repite-email": { required: true, equalTo: "#frm-registro-email", email: true } } }; const validacionRegistro = formElement.validate(opciones_validacion_registro); $(".btn-registrate").on("click", function () { const tipo = $(this).attr("data-tipo") * 1; $("#" + formId + "-tipo").val(tipo); const titulo = tipo === 1 ? "Crear cuenta tutor" : "Crear cuenta estudiante"; ClassBlockUI.abrirBlockUIEstandar("modal-registro", undefined, titulo, "modal681"); }); $("#btn-enviar-registrate").on("click", function () { var validation = formElement.valid(); var extraMsg = ""; if (!$("#politica-registro").is(":checked")) { extraMsg = $("#politica-registro").attr("title"); } var recaptchaResponse = grecaptcha.getResponse(); if (recaptchaResponse.length === 0) { extraMsg += (extraMsg ? "
" : "") + "Error: reCAPTCHA no verificado."; } if (!validation || extraMsg !== "") { ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revise los campos marcados en distinto color porque se han detectado lo siguientes errores

" + validacionRegistro.invalidMessages("
") + extraMsg, true, undefined, ""); return; } Utils.sendStandardAjax(formId, "https://www.themap.es/ajax/Usuarios.registro.php", {successCallback: "data-location"}); }); }); } static guardaClaveOlvidoPass() { var opciones_validacion = { showLabels: false, rules: { passwordOlvido: { required: true, minlength: 6 }, password2: { equalTo: "#passwordOlvido" } } }; Utils.sendStandardAjax("form_olvido", "https://www.themap.es/ajax/Usuarios.guardaClave.php?CSRF=" + CSRF, { opcionesValidacion: opciones_validacion, successCallback: "https://www.themap.es/" }); } static enviarOlvido() { Utils.sendStandardAjax("frmEnviarOlvido", "https://www.themap.es/ajax/Usuarios.olvidarContrasena.php", { successCallback: null, resetFormOnSuccess: true }); } static initMisDatos(idFrmMisDatos, idProvinciaSeleccionada, idLocalidadSeleccionada, idFrmContrasena) { $(document).ready(function () { initMisDatos(); initContrasena(); $("#btn-baja").click(confirmacionBaja); }); function initMisDatos() { preparaLugar(28, idProvinciaSeleccionada, idLocalidadSeleccionada, undefined, idFrmMisDatos + "-provincia", idFrmMisDatos + "-localidad"); const opciones_validacion = {showLabels: false, rules: {"provincia": {min: 1}, "localidad": {min: 1}}}; $("#btn-guardar-datos").click(function () { Utils.sendStandardAjax(idFrmMisDatos, "https://www.themap.es/ajax/Usuarios.modificarDatos.php", { opcionesValidacion: opciones_validacion, successCallback: null }); }); } function initContrasena() { const opciones_validacion = { showLabels: false, rules: { "contrasena-repite": { equalTo: "#" + idFrmContrasena + "-nueva", minlength: 6 }, "contrasena-nueva": {minlength: 6} } }; $("#btn-guardar-contrasena").click(function () { Utils.sendStandardAjax(idFrmContrasena, "https://www.themap.es/ajax/Usuarios.modificarPassword.php", { opcionesValidacion: opciones_validacion, successCallback: null, resetFormOnSuccess: true }); }); } function confirmacionBaja() { ClassBlockUI.abrirBlockUIConfirm("Si te das de baja perderás tu acceso, ¿estás seguro de que quieres darte de baja?", "SÍ, DARME DE BAJA", enviarBaja, "No, continuar", undefined, "modal681 modalDarBaja", "VAS A DARTE BAJA"); } function enviarBaja() { $(".modal").modal("hide"); var opcionesDatos = { type: "POST", dataType: "json", url: "https://www.themap.es/ajax/Usuarios.baja.php?CSRF=" + CSRF, success: function (data, textStatus, XMLHttpRequest) { if (data["error_number"] >= 0) { ClassBlockUI.abrirBlockUIEstandarMensaje("Te vamos a echar mucho de menos. Puedes volver a registrarte cuando quieras, nos vemos pronto", true, "https://www.themap.es/logout.php", "modal681 modalDarBaja", "TE HAS DADO DE BAJA"); } else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false); } } }; $.ajax(opcionesDatos); ClassBlockUI.abrirBlockUIEsperePorFavor(); } } static initMisAportaciones() { $("body").on("click", ".btn-eliminar-doc", function (e) { e.preventDefault(); const idDoc = $(this).attr("data-id"); const nombreDoc = $(this).attr("data-title"); ClassBlockUI.abrirBlockUIConfirm("Va a eliminar el documento %1%, ¿Desea continuar?".replace("%1%", nombreDoc), "Aceptar", function () { eliminarDoc(idDoc) }, "Cancelar"); }); $("body").on("click", ".btn-eliminar-enlace", function (e) { e.preventDefault(); const idEnlace = $(this).attr("data-id"); const tipo = $(this).attr("data-tipo"); ClassBlockUI.abrirBlockUIConfirm("Va a eliminar un enlace de %1%, ¿Desea continuar?".replace("%1%", tipo), "Aceptar", function () { eliminarEnlace(idEnlace) }, "Cancelar"); }); function eliminarDoc(id) { $(".modal").modal("hide"); Utils.sendStandardAjax(undefined, "https://www.themap.es/ajax/MiDocumento.eliminar.php?id=" + id, { "successCallback": function (data) { $(".modal").modal("hide"); if (data["error_number"] >= 0) { Web.notify(data["error_message"], false); tablatablaMisDocumentos.ajax.reload(); } else { Web.notify(data["error_message"], true); } } }); } function eliminarEnlace(id) { $(".modal").modal("hide"); Utils.sendStandardAjax(undefined, "https://www.themap.es/ajax/MiEnlace.eliminar.php?id=" + id, { "successCallback": function (data) { $(".modal").modal("hide"); if (data["error_number"] >= 0) { Web.notify(data["error_message"], false); tablatablaMisEnlaces.ajax.reload(); } else { Web.notify(data["error_message"], true); } } }); } } static initMisCompras(urlDatatable) { $(document).ready(function () { initFiltros(); }); function initFiltros() { $('#filtro-mes, #filtro-anyo').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected === null) return; const anyo = $('#filtro-anyo').val(); const mes = $('#filtro-mes').val(); tablatablaMisCompras.ajax.url(`${urlDatatable}&anyo=${anyo}&mes=${mes}`).load(); }); } } static initMonedero(urlDatatable) { $(document).ready(function () { initFiltros(); initRetirar(); }); function initRetirar() { $("#btn-abre-retirar").click(function () { let precio = Web.limpiarImporte($("#resumen-cantidad-retirar").val()); if (precio === "0" || precio === "") precio = $("#resumen-cantidad-retirar").attr("placeholder"); $("#frm-retirar-cantidad").val(precio); ClassBlockUI.abrirBlockUIEstandar("modal-retirar", undefined, "Retirar", "modal500"); }); $("#btn-confirma-retirar").click(function () { const cantidadElement = $("#frm-retirar-cantidad"); const ibanElement = $("#frm-retirar-iban"); let extraMsg = ""; const precioMax = cantidadElement.attr("data-max")*1 || 0; const precio = Web.limpiarImporte(cantidadElement.val()).replace(",", ".")*1 || 0; if (precio > precioMax || precio < 5) { extraMsg += (extraMsg !== "" ? "
" : "")+cantidadElement.attr("title"); } if (!Utils.isValidIBANNumber(ibanElement.val())) { extraMsg += (extraMsg !== "" ? "
" : "")+ibanElement.attr("title"); } if (extraMsg !== "") { ClassBlockUI.abrirBlockUIEstandarMensaje(extraMsg, true); return; } Utils.sendStandardAjax("frm-retirar", "https://www.themap.es/ajax/Monedero.retirar.php", { successCallback: "data-location", }); }); } function initFiltros() { $('#filtro-mes, #filtro-anyo').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected === null) return; const anyo = $('#filtro-anyo').val(); const mes = $('#filtro-mes').val(); tablatablaMonedero.ajax.url(`${urlDatatable}&anyo=${anyo}&mes=${mes}`).load(); }); } } static initValorar() { const selectorContenedorValoracion = "#realizarValoracion"; const selectorEstrellas = selectorContenedorValoracion + " .estrella"; const selectorInputPuntos = "#frmValorarPuntos"; const selectorBloqueValorar = "#bloqueValorar"; const selectorModal = ".modal"; const selectorTextareaValoracion = "#frmValorarValoracion"; const selectorBtnValorar = "#btnValorar"; $(selectorContenedorValoracion).on("mouseenter", ".estrella.activa", function () { const puntos = $(this).attr("data-id") * 1; marcarEstrellas(puntos); }); $(selectorContenedorValoracion).on("click", ".estrella.activa", function () { const puntos = $(this).attr("data-id") * 1; $(selectorInputPuntos).val(puntos); marcarEstrellas(puntos); }); $("body").on("mouseleave", selectorContenedorValoracion, function () { const puntos = $(selectorInputPuntos).val() * 1; marcarEstrellas(puntos); }); $(selectorBloqueValorar).on("click", "#btnValorar", function (event) { event.preventDefault(); if ($(this).attr("data-solo-cerrar") === "1") { $(selectorModal).modal("hide"); return; } let extraMsg = ""; if ($(selectorInputPuntos).val() * 1 === 0) { extraMsg = "Selecciona una valoración"; } const successCallback = function (data, textStatus, XMLHttpRequest) { if (data["error_number"] < 0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); } else { $(selectorModal).modal("hide"); Web.notify(data["error_message"], false); tablatablaMisCompras.ajax.reload(); } }; Utils.sendStandardAjax("frmValorar", "https://www.themap.es/ajax/Valoracion.enviar.php?CSRF=" + CSRF, { extraErroresForm: extraMsg, successCallback: successCallback }); }); $(selectorBloqueValorar).on("click", "#btnCerrarValorar", function (event) { event.preventDefault(); $(selectorModal).modal("hide"); }); $("body").on("click", ".btn-valoracion", function (e) { e.preventDefault(); const id = $(this).attr("data-id"); const valoracion = $(this).attr("data-valoracion") * 1; const comentario = $(this).attr("data-comentario"); $("#frmValorarID").val(id); $(selectorTextareaValoracion).val(comentario); marcarEstrellas(valoracion); $(selectorInputPuntos).val(valoracion); if (valoracion > 0) { $(selectorTextareaValoracion).prop("readonly", true); $(selectorEstrellas).removeClass("activa"); $(selectorBtnValorar).attr("data-solo-cerrar", "1").text("Cerrar"); } else { $(selectorTextareaValoracion).prop("readonly", false); $(selectorEstrellas).addClass("activa"); $(selectorBtnValorar).attr("data-solo-cerrar", "0").text("Dejar valoración"); } ClassBlockUI.abrirBlockUIEstandar("bloqueValorar", undefined, "Deja una valoración", "modal681"); }); function marcarEstrellas(puntos) { $(selectorEstrellas).removeClass("valorada").addClass("no-valorada"); for (let i = 1; i <= puntos; i++) { $(selectorContenedorValoracion + " .estrella[data-id='" + i + "']").addClass("valorada").removeClass("no-valorada"); } } } } window.ClassUsuarios = ClassUsuarios;