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 += '';
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;