Mapeate.Mapas.Global = function(mapeate, entradas){ const self = this; let iniciado = false; const constructor = () => {}; this.iniciar = callback => { const terminar = estado => typeof callback == "function" && callback(estado); if(iniciado){ terminar(false); return false; }; iniciado = true; terminar(true); return true; }; this.preparar = svg => { svg = svg.replace(/World Map<\/title>/, ""); svg = svg.replace(/(<(g|path|circle) id="([^"]+)")([^>]+>)([\r\n]+\s+<title>[^<]+<\/title>)?/g, (...argumentos) => { let html = argumentos[1]; [ ["data_objetivo", argumentos[3]], ["data_habilitado", false], ["data_ver_titulo", false], ["data_acertado", false], ["data_i18n", "nombre_pais_" + argumentos[3]], ["data_title", mapeate.i18n("mapeate_pais_" + argumentos[3])], ["onmouseover", mapeate.nombre_objeto + ".mapas.mostrar_seleccion(this, event);"], ["onmouseout", mapeate.nombre_objeto + ".mapas.ocultar_seleccion(this, event);"], ["onclick", mapeate.nombre_objeto + ".mapas.elegir(this, event);"] ].forEach(([nombre, valor]) => html += ` ` + nombre.replace(/_/g, '-') + `="` + valor + `"`); html += argumentos[4]; return html; }); svg = svg.replace(/<style[^>]*>((?!<\/style)(.|[\r\n]))+<\/style>/, ""); [/(circlexx)/g, /(subxx)/g].forEach((patron, i) => svg = svg.replace(patron, "$1 nivel-" + (i + 2))); return svg; }; constructor(); };