const COMENTARIOS_PERFILES_USUARIO = 1;
const COMENTARIOS_FOROS = 2;
const COMENTARIOS_PAGINA_OBJETO = 3;
const COMENTARIOS_PERFIL_PERSONAJE = 4;
const COMENTARIOS_PERFIL_AUTOR = 5;
const COMENTARIOS_PERFIL_ACTOR = 6;
const COMENTARIOS_PERFIL_REVISTA = 7;
const COMENTARIOS_PERFIL_EDITORIAL = 8;
const COMENTARIOS_PERFIL_PAIS = 9;
const COMENTARIOS_PERFIL_COMPANIA = 101;
const COMENTARIOS_PERFIL_SCANLATING_GROUP = 102;
const COMENTARIOS_LISTA_COMIC_PERSONAJE = 63;
const COMENTARIOS_TIMELINE=64;
const COMENTARIOS_PUBLICACION_COMIC=100;

const TIEMPO_ESPERA_SIN_ESCRIBIR = 500;

TECLA_ESCAPE = 27;

function CodificarCadena(cadena){
	return btoa(cadena);
}

function DecodificarCadena(cadena){
	return atob(cadena);
}

function CalcularAniosTranscurridos(fecha_fin,fecha_inicio = new Date()) { 
    var ageDifMs = fecha_inicio - fecha_fin;
    var ageDate = new Date(ageDifMs); 
    return Math.abs(ageDate.getUTCFullYear() - 1970);
}

function ConvertirElemento(elemento,tipo='entero'){
    let valor = '';

    switch(tipo){
        case 'entero':
            valor = parseInt(elemento);
            break;
    }

    return valor;
}

function AlertaGeneralSesionNoIniciada(){
	MostrarAlerta('Debe iniciar sessión para agregar o modificar algun contenido, favor de logearse y volver a registrar su contenido.');
}

function MostrarAlerta(mensaje,titulo=''){
	alert(mensaje);
}

function ExisteElemento(aguja, pajar) {
    var length = pajar.length;
    for(var i = 0; i < length; i++) {
        if(pajar[i] == aguja) return true;
    }
    return false;
}

function ExisteElementoDom(id){
	return  $(id).length>0
}

function AgregarQuitarElementoContenedor(elemento,contenedor){
	if(!ExisteElemento(elemento,contenedor)){
		contenedor.push(elemento);
	}else{
		EliminarElementoContedor(elemento,contenedor);
	}
}

function EliminarElementoContedor(elemento,contenedor){
	let indice = contenedor.indexOf(elemento);
		
	if(indice>-1){
		contenedor.splice(indice,1);
	}
}

function AgregarElementoContenedor(elemento,contenedor){
	if(!ExisteElemento(elemento,contenedor)){
		contenedor.push(elemento);
	}
}

function RecargarPagina(){
	location.reload();
}

//function incrementaValorListaRecomendacion(valorMaximo,cod){
function MeGustaComentarioPerfil(valorMaximo,cod){
    var codigo=$("#codigo_"+cod).val(); //codigo de recomendacion
    var usuario=$("#usuariox").val(); // usuario que realizara el like
    var value=$("#resultadochapter_"+cod).val(); // valor mgusta
    var value2=$("#resultadovolumenveri_"+cod).val(); // valor de la cantidad de elementos de la tabla de registro post
    var usuarioreceptor=$("#codusuarioreceptorx_"+cod).val(); // usuario que realizara el like
    var valpagereceptorx=$("#valpagereceptorx").val(); //valor de page
    var identificadorx='2';
        
    if(value2=='0'){
	    if(value >= valorMaximo) {
	    	value=valorMaximo;    
	    }else{
	    	value++;
	    	value2++;    
	    }

    	var datos = 'codigo='+ codigo+'&usuario='+usuario+'&value='+value+'&usuarioreceptor='+usuarioreceptor+'&valpagereceptorx='+valpagereceptorx+'&identificadorx='+identificadorx;
	    
	    $.ajax({
	                type: "POST",
	                url: "../../controller/cComentarioObjetoInicialGeneralUsuario.php",
	                data: datos,
	                success: function(data) { 
		                if(data.match("1")){
			                $('#resultadochapter_'+cod).val(value);
			                $('#resultadovolumenveri_'+cod).val(value2);
		                 	//filter_data();   
		                }
	                }
	    		});

    }else{ 
	    if(value <= valorMaximo) {    
	    	value--;
	    	value2--;
	    }else{
	    	value--;
	    	value2--;    
	    }
    
	    var datos = 'codigo='+ codigo+'&usuario='+usuario+'&value='+value;
	    
	    $.ajax({
	                type: "POST",
	                url: "../../controller/cComentarioObjetoFinalGeneralUsuario.php",
	                data: datos,
	                success: function(data) { 
	                //$('#msgverificacionlista').fadeIn(300).html(data);      
		                if(data.match("1")){
		                //filter_data();
			                $('#resultadochapter_'+cod).val(value);
			                $('#resultadovolumenveri_'+cod).val(value2);
		                }   
	                }
	    		});
	}   
}


function GenerarVistaComentariosCitados(comentarios,tipo_comentario){
	let plantilla = "";
	
	if(tipo_comentario==COMENTARIOS_PERFILES_USUARIO){
		$.each(comentarios,function(indice,comentario){
			
			plantilla += '<blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username="">' +
		                    '<div class="ipsQuote_citation ipsQuote_open">' +  
		                        '<a href="#" data-action="toggleQuote">&nbsp;</a>' +
		                        '<a class="ipsPos_right" style="cursor:pointer"><i class="fa fa-share"></i></a>  On ' + comentario.fecha_sistema + ' at ' + comentario.hora_sistema + ', ' +   
		                        '<a href="/' + comentario.emisor_camel_case + '" data-ipshover="" id="ips_uid_6301_3">' + (comentario.emisor_username??'') + '</a> said: ' + 
		                        '</div>' +
		                    '<div class="ipsQuote_contents ipsClearfix">' +
		                          comentario.comentario  +
		                    '</div>' +
		                '</blockquote>';
		    
		    
        });
	}else if(tipo_comentario==COMENTARIOS_FOROS){
		$.each(comentarios,function(indice,comentario){
			
			plantilla += '<blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username="">' +
		                    '<div class="ipsQuote_citation ipsQuote_open">' +  
		                        '<a href="#" data-action="toggleQuote">&nbsp;</a>' +
		                        '<a class="ipsPos_right" style="cursor:pointer"><i class="fa fa-share"></i></a>  On ' + comentario.fecha_sistema + ' at ' + comentario.hora_sistema + ', ' +   
		                        '<a href="/' + comentario.emisor_camel_case + '" data-ipshover="" id="ips_uid_6301_3">' + (comentario.emisor_username??'') + '</a> said: ' + 
		                        '</div>' +
		                    '<div class="ipsQuote_contents ipsClearfix">' +
		                          comentario.comentario  +
		                    '</div>' +
		                '</blockquote>';
		    
		    
        });
	}else if(tipo_comentario==COMENTARIOS_PAGINA_OBJETO){
		$.each(comentarios,function(indice,comentario){
			
			plantilla += '<blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username="">' +
		                    '<div class="ipsQuote_citation ipsQuote_open">' +  
		                        '<a href="#" data-action="toggleQuote">&nbsp;</a>' +
		                        '<a class="ipsPos_right" style="cursor:pointer"><i class="fa fa-share"></i></a>  On ' + comentario.fecha_sistema + ' at ' + comentario.hora_sistema + ', ' +   
		                        '<a href="/' + comentario.emisor_camel_case + '" data-ipshover="" id="ips_uid_6301_3">' + (comentario.emisor_username??'') + '</a> said: ' + 
		                        '</div>' +
		                    '<div class="ipsQuote_contents ipsClearfix">' +
		                          comentario.comentario  +
		                    '</div>' +
		                '</blockquote>';
		    
		    
        });
	}else if(tipo_comentario==COMENTARIOS_PERFIL_PERSONAJE){
		$.each(comentarios,function(indice,comentario){
			
			plantilla += '<blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username="">' +
		                    '<div class="ipsQuote_citation ipsQuote_open">' +  
		                        '<a href="#" data-action="toggleQuote">&nbsp;</a>' +
		                        '<a class="ipsPos_right" style="cursor:pointer"><i class="fa fa-share"></i></a>  On ' + comentario.fecha_sistema + ' at ' + comentario.hora_sistema + ', ' +   
		                        '<a href="/' + comentario.emisor_camel_case + '" data-ipshover="" id="ips_uid_6301_3">' + (comentario.emisor_username??'') + '</a> said: ' + 
		                        '</div>' +
		                    '<div class="ipsQuote_contents ipsClearfix">' +
		                          comentario.comentario  +
		                    '</div>' +
		                '</blockquote>';
		    
		    
        });
	}else if(tipo_comentario==COMENTARIOS_PERFIL_AUTOR || tipo_comentario==COMENTARIOS_PERFIL_ACTOR || tipo_comentario==COMENTARIOS_PERFIL_REVISTA || tipo_comentario==COMENTARIOS_PERFIL_EDITORIAL || tipo_comentario==COMENTARIOS_PERFIL_PAIS || tipo_comentario=='61' || tipo_comentario=='62' || tipo_comentario==COMENTARIOS_LISTA_COMIC_PERSONAJE || tipo_comentario==COMENTARIOS_PUBLICACION_COMIC){
		
        $.each(comentarios,function(indice,comentario){
            
			plantilla += '<blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username="">' +
		                    '<div class="ipsQuote_citation ipsQuote_open">' +  
		                        '<a href="#" data-action="toggleQuote">&nbsp;</a>' +
		                        '<a class="ipsPos_right" style="cursor:pointer"><i class="fa fa-share"></i></a>  On ' + comentario.fecha_sistema + ' at ' + comentario.hora_sistema + ', ' +   
		                        '<a href="/' + comentario.emisor_nombre_camel_case + '" data-ipshover="" id="ips_uid_6301_3">' + (comentario.emisor_nombre_usuario??'') + '</a> said: ' + 
		                        '</div>' +
		                    '<div class="ipsQuote_contents ipsClearfix">' +
		                          comentario.comentario  +
		                    '</div>' +
		                '</blockquote>';		    
		    
        });
	}else if(tipo_comentario==COMENTARIOS_TIMELINE){
        $.each(comentarios,function(indice,comentario){
            
			plantilla += '<blockquote class="ipsQuote" data-ipsquote="" data-ipsquote-contentapp="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="" data-ipsquote-contentid="" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="" data-ipsquote-userid="" data-ipsquote-username="">' +
		                    '<div class="ipsQuote_citation ipsQuote_open">' +  
		                        '<a href="#" data-action="toggleQuote">&nbsp;</a>' +
		                        '<a class="ipsPos_right" style="cursor:pointer"><i class="fa fa-share"></i></a>  On ' + comentario.fecha_sistema + ' at ' + comentario.hora_sistema + ', ' +   
		                        '<a href="' + comentario.url_usuario_creo + '" data-ipshover="" id="ips_uid_6301_3">' + (comentario.usuario_creo??'') + '</a> said: ' + 
		                        '</div>' +
		                    '<div class="ipsQuote_contents ipsClearfix">' +
		                          comentario.comentario  +
		                    '</div>' +
		                '</blockquote>';		    
		    
        });
    }

	return plantilla;
}

function RecuperarComentariosCitados(comentarios,tipo_comentario)
{
	let comentarios_detallados = [];

	if(tipo_comentario==COMENTARIOS_PERFILES_USUARIO){
		
		$.ajax({
                    type: "POST",
                	url: URL_WEB + "/controller/forum_usuarios/RecuperarComentarios.php",
                    data: {ids:comentarios},
                    async:false, 
                    success: function(data) { 
                        if(!data.existe_errores){                        	
                        	comentarios_detallados = data.comentarios;                        	
                        }
                    }
        });
	}else if(tipo_comentario==COMENTARIOS_FOROS){
		$.ajax({
                    type: "POST",
                	url: URL_WEB + "/controller/forum_comentarios/RecuperarComentarios.php",
                    data: {ids:comentarios},
                    async:false, 
                    success: function(data) { 
                        if(!data.existe_errores){                        	
                        	comentarios_detallados = data.comentarios;                        	
                        }
                    }
        });
	}else if(tipo_comentario==COMENTARIOS_PAGINA_OBJETO){
		$.ajax({
                    type: "POST",
                	url: URL_WEB + "/controller/comentarios/RecuperarComentarios.php",
                    data: {ids:comentarios},
                    async:false, 
                    success: function(data) { 
                        if(!data.existe_errores){                        	
                        	comentarios_detallados = data.comentarios;                        	
                        }
                    }
        });
	}else if(tipo_comentario==COMENTARIOS_PERFIL_PERSONAJE){
		$.ajax({
                    type: "POST",
                	url: URL_WEB + "/controller/comentarios/RecuperarComentariosPersonajesPorCodigo.php",
                    data: {ids:comentarios},
                    async:false, 
                    success: function(data) { 
                        if(!data.existe_errores){                        	
                        	comentarios_detallados = data.comentarios;                        	
                        }
                    }
        });
    }else if(tipo_comentario==COMENTARIOS_TIMELINE){
        $.ajax({
			type: "POST",
			url:  "/controller/comentarios/RecuperarComentariosEntradasPorCodigo.php",
			data: {ids:comentarios},
			async:false, 
			success: function(data) { 
				if(!data.existe_errores){                        	
					comentarios_detallados = data.comentarios;                        	
				}
			}
		});
	}else if(tipo_comentario==COMENTARIOS_PERFIL_AUTOR || tipo_comentario==COMENTARIOS_PERFIL_ACTOR || tipo_comentario==COMENTARIOS_PERFIL_REVISTA || tipo_comentario==COMENTARIOS_PERFIL_EDITORIAL || tipo_comentario==COMENTARIOS_PERFIL_PAIS || tipo_comentario=='61' || tipo_comentario=='62' || tipo_comentario==COMENTARIOS_LISTA_COMIC_PERSONAJE || tipo_comentario==COMENTARIOS_PUBLICACION_COMIC){
        $.ajax({
			type: "POST",
			url:  "/controller/comentarios/RecuperarComentariosGeneralesPorCodigo.php",
			data: {ids:comentarios},
			async:false, 
			success: function(data) { 
				if(!data.existe_errores){                        	
					comentarios_detallados = data.comentarios;                        	
				}
			}
		});
	}
	
	return comentarios_detallados;
}

function QuitarCitaComentario(identificador,cod_comentario,cod_usuario_cito,tipo_comentario,funcion_ejecutar=function(){})
{
	let id = identificador + "-" + cod_usuario_cito + "-" + tipo_comentario;
	let comentarios = localStorage.getItem(id)===null?[]:JSON.parse(localStorage.getItem(id));

	if(comentarios.length>0){
		let indice = comentarios.indexOf(cod_comentario);

		if(indice>=0){
			comentarios.splice(indice, 1);
			localStorage.setItem(id, JSON.stringify(comentarios));

			funcion_ejecutar(comentarios);
		}
	}
}

function CitarComentario(identificador,cod_comentario,cod_usuario_cito,tipo_comentario,funcion_ejecutar=function(){})
{
	let id = identificador + "-" + cod_usuario_cito + "-" + tipo_comentario;
	//localStorage.setItem("identificador", id);
	let comentarios = localStorage.getItem(id)===null?[]:JSON.parse(localStorage.getItem(id));

	if(!ExisteElemento(cod_comentario,comentarios)){
		comentarios.push(cod_comentario);
		localStorage.setItem(id, JSON.stringify(comentarios));

		funcion_ejecutar(comentarios);
	}
}

function CamelCase(str) {
  return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function(word, index) {
    return index === 0 ? word.toLowerCase() : word.toUpperCase();
  }).replace(/\s+/g, '-').toLowerCase();
}

function CortarCadena(cadena,cadena_posfijo="...",inicio=0,longitud=13)
{
	var cadena = String(cadena);

	if(cadena.length>longitud)
		return String(cadena).substring(inicio, longitud) + cadena_posfijo;
	else
		return cadena;
}

function ReemplazarCadena(cadena,cadena_remplazar,cadena_reemplazo = '')
{
	var cadena = String(cadena);	

	return cadena.replaceAll(cadena_remplazar, cadena_reemplazo);
}

function LimpiarEspacios(cadena)
{
	return String(cadena).trim();
}

function ResetearFormulario(id_elemento)
{
	$("#" + id_elemento)[0].reset();
}	

function NumeroDiasPorMes(mes){
	let cantidad_dias = 0;
	
	switch (mes) {
		case 1:
	  	case 3:
	  	case 5:
	  	case 7:
	  	case 8:
	  	case 10:
	  	case 12:
			cantidad_dias = 31;
			break;
	  	case 4:
	  	case 6:
	  	case 9:
	  	case 11:
			cantidad_dias = 30;
			break;
	  	case 2:
			cantidad_dias = 28;
			break;
	  	default:
			cantidad_dias = 0;
	}
	
	return cantidad_dias;
}

function toDataURL(url, callback) {
  var xhr = new XMLHttpRequest();
  xhr.onload = function() {
    var reader = new FileReader();
    reader.onloadend = function() {
      callback(reader.result);
    }
    reader.readAsDataURL(xhr.response);
  };
  xhr.open('GET', url);
  xhr.responseType = 'blob';
  xhr.send();
}

function UrlValida(str) {
	/*
  	var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
    	'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
    	'((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
    	'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
    	'(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
    	'(\\#[-a-z\\d_]*)?$','i'); // fragment locator

  	return !!pattern.test(str);
  	*/

  	var pattern = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 
        if (pattern.test(str)) { 
            return true; 
	    }  

        return false; 
}

function ModificacionParametrosUrl(url, parametro, valor){
    var newAdditionalURL 	= 	"";
    var tempArray 			= 	url.split("?");
    var baseURL 			= 	tempArray[0];
    var additionalURL 		= 	tempArray[1];
    var temp = "";
    if (additionalURL) {
        tempArray = additionalURL.split("&");
        for (var i=0; i<tempArray.length; i++){
            if(tempArray[i].split('=')[0] != parametro){
                newAdditionalURL += temp + tempArray[i];
                temp = "&";
            }
        }
    }

    var rows_txt = temp + "" + parametro + "=" + valor;
    return baseURL + "?" + newAdditionalURL + rows_txt;
}

function CambiarUrl(url){
	window.history.replaceState('', '', URL_WEB + '/' + url);
}

function ReagruparArreglo(arreglo,cantidad_por_grupo)
{
	let datos_reagrupados = [];
	
	for(indice=0;indice<arreglo.length;indice++){
		let indicador = indice==0?0:Math.floor(indice/cantidad_por_grupo);
		//console.log(indicador);
		if(!Array.isArray(datos_reagrupados[indicador])){
			datos_reagrupados[indicador] = [];
		}

		datos_reagrupados[indicador].push(arreglo[indice]);
	}

	return datos_reagrupados;
}

function FechaHoraDelDiaNumeral(){
	var fecha = new Date();

	return fecha.getFullYear().toString() + fecha.getMonth().toString() + fecha.getDate().toString() + fecha.getHours().toString() + fecha.getMinutes().toString() + fecha.getSeconds().toString();
}

function  GenerarCadenaAleatoria(longitud = 15){
    const characters ='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let resultado= '';
    const charactersLength = characters.length;
    for ( let i = 0; i < longitud; i++ ) {
        resultado += characters.charAt(Math.floor(Math.random() * charactersLength));
    }

    return resultado;
}

function FechaValidaFormatoMesDiaAnio(fecha){
	var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/;
	if (!(date_regex.test(fecha))) {
    	return false;
	}

	return true;
}

function ClonarObjeto(objeto){
    return JSON.parse(JSON.stringify(objeto));
}

function PaginasMostradas(paginador){
	let total_paginas = parseInt(paginador.total_paginas);
    let paginas = [];
    /*
	let indice = parseInt(paginador.pagina_actual) - 3;
	let diferencia_paginas =  paginador.total_paginas - parseInt(paginador.pagina_actual);
	let inicio = parseInt(paginador.pagina_actual)<=3?1:(diferencia_paginas==0?indice - 1:(diferencia_paginas==1?indice:indice+1));
	*/
	
	let cantidad_paginas_mostrar = total_paginas>5?5:total_paginas;

	let diferencia_izq = parseInt(paginador.pagina_actual)-1;
	let diferencia_der = total_paginas - parseInt(paginador.pagina_actual);
	let inicio = 1;

	if(cantidad_paginas_mostrar>4){
		if(diferencia_izq<=2 || diferencia_der<=2){
		
			if(diferencia_izq<=2){			
				inicio = 1;
			}else{
				inicio = total_paginas - 4;
			}
		}else{
			inicio = parseInt(paginador.pagina_actual) -2;
		}
	}
	
	
	while (paginas.length<cantidad_paginas_mostrar) {
		paginas.push(inicio++);
	}

	return paginas;
}



function CrearInstanciaEditorTexto(id_elemento,contenedor='',callback_instancia_generada=function(){},multiples_toolbar=false,editor_bloqueado=false){
	
	return  ClassicEditor
				.create( document.querySelector( '#'+id_elemento ),{
					toolbar: {				
						shouldNotGroupWhenFull: multiples_toolbar                        
					},                    
					mention: {
						feeds: [
							{
								marker: '@',
								feed: RecuperarUsuarios,
								minimumCharacters: 2
							},

							{
								marker: '#',
								feed: RecuperarComicsAnimaciones,
								minimumCharacters: 2,
								itemRenderer:RendererResultadosComicAnimaciones
							}
						]
						
					},

					fontSize: {
						options: [
							9,
							10,
							11,
							12,
							13,
							14,
							15,
							16,
							17,
							19,
							21
						]
					},
					/*Height: '300px'*/
				})
				.then( editor => {
					//if(contenedor!='')                    
					if(Array.isArray(contenedor))
						contenedor[id_elemento] = editor; 
                    else {                        
                        contenedor = editor;                        
                    }
                    
                    editor.isReadOnly = editor_bloqueado;

					callback_instancia_generada(editor); 
				} )
				.catch( error => {
						console.log( error );
				} );
}

function RendererResultadosComicAnimaciones( item ) {
    const itemElement = document.createElement( 'span' );

	itemElement.classList.add( 'resultados-menciones-comic');

	const tituloElement = document.createElement( 'span' );
	tituloElement.classList.add( 'resultados-titulo-resultado');
	tituloElement.textContent = item.id;
	itemElement.appendChild( tituloElement );

	const informacionElement = document.createElement( 'ul' );
	informacionElement.classList.add( 'informacion-mencion-comic');

	const tipoElement = document.createElement( 'li' );
	tipoElement.textContent = item.tipo;
	informacionElement.appendChild( tipoElement );

	const anioElement = document.createElement( 'li' );
	anioElement.textContent = item.anio;
	informacionElement.appendChild( anioElement );


	
	/*
    itemElement.classList.add( 'custom-item' );
    itemElement.id = `mention-list-item-id-${ item.userId }`;
    itemElement.textContent = `${ item.name } `;

    const usernameElement = document.createElement( 'span' );

    usernameElement.classList.add( 'custom-item-username' );
    usernameElement.textContent = item.id;
	*/
    itemElement.appendChild( informacionElement );
	
    return itemElement;

	//<span class="custom-item ck-button ck-on" id="mention-list-item-id-undefined">undefined <span class="custom-item-username">#Boruto: Naruto Next Generations</span></span>
}

function RecuperarUsuarios( queryText ) {    
    return new Promise( resolve => {		
		$.ajax({
					type: "GET",
					url: "/controller/usuario/BusquedaUsuarios.php",
					data:{texto_busqueda:queryText},
					success: function(data) {
						if(!data.existe_errores){                                                      
							resolve(data.usuarios);
						}else{
							resolve([]);
						}  
					} 
				});
    } );    
}

function RecuperarComicsAnimaciones(queryText)
{    
	return new Promise( resolve => {		
		$.ajax({
					type: "GET",
					url: "/controller/comic/BusquedaComicAnimacion.php",
					data:{texto_busqueda:queryText},
					success: function(data) {
						if(!data.existe_errores){                                                      
							resolve(data.comics);
						}else{
							resolve([]);
						}  
					} 
				});
	} );	
}

function Mayusculas(cadena){
	return cadena.toUpperCase();
}

function PrimeraLetraMayuscula(cadena) {
    return cadena.charAt(0).toUpperCase() + cadena.slice(1);
}

function AjustarTextoContendor(id_elemento,ancho_contenedor=950,tamano_fuente_minimo=25){
	var resizer = $("#" + id_elemento);

	size = parseInt(resizer.css("font-size"), 10);
	//console.log(resizer.width());
	while(resizer.width() > ancho_contenedor && size >tamano_fuente_minimo) {		
		//console.log(resizer.width());
		size = parseInt(resizer.css("font-size"), 10);
		resizer.css("font-size", size - 1);
	}
}

function AjustatTextoEnRelacionContenedor(contenedor,contenido,tamano_fuente_minimo=25){
    let elemento_titulo = $(contenido);
    let contenedor_titulo = $(contenedor);
    let tamanio_fuente = 0;
    const factor = 4.8;

    tamanio_fuente = parseInt(elemento_titulo.css("font-size"), 10);            
    //console.log("tamaño del contenedor:" + contenedor_titulo.width());
    //console.log("tamaño del contenedor:" + contenedor_titulo.width());
    while(elemento_titulo.width() >contenedor_titulo.width() && tamanio_fuente>tamano_fuente_minimo) {		
        //console.log("tamaño del titulo:" + elemento_titulo.width());
        tamanio_fuente = parseInt(elemento_titulo.css("font-size"), 10);
        elemento_titulo.css("font-size", tamanio_fuente - 1);
    } 
}

function BuscadorForos(texto_busqueda){
	if(texto_busqueda){
		location.href = "/busqueda-general-foros?texto_busqueda=" + texto_busqueda;
	}
}

function ContenidosVisitados(usuario,contenidos){
	if(contenidos.length>0){
		$.ajax({
				type: "POST",
				url: "/controller/objetos/AgregarContenidosVisitados.php",
				data:{id_usuario:usuario,contenidos:contenidos},
				success: function(data) {
					if(data.existe_errores){
						console.log(data);
					}
				}
		});
	}
}

function CalcularTiempoTrascurrido(cantidad_segundos,fecha){
	let tiempo_transcurrido     =   '';
	let segundos                =   cantidad_segundos;
	let minutos                 =   Math.trunc(cantidad_segundos/60);
	let horas                   =   Math.trunc(cantidad_segundos/3600);
	let dias                    =   Math.trunc(cantidad_segundos/86400);

	if(segundos==0){
		tiempo_transcurrido = "1s";
	}else if(segundos<=60){
		tiempo_transcurrido = `${segundos}s`;
	}else if(minutos<=60){            
		tiempo_transcurrido = `${minutos}m`;
	}else if(horas<=24){
		tiempo_transcurrido = `${horas}h`;
	}else if(dias<=30){
		tiempo_transcurrido = `${dias}d`;
	}else{
		tiempo_transcurrido = fecha;
	}

	return tiempo_transcurrido;
}

function EmailValido(mail) {
	let expresion_regular = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  
	if (mail.match(expresion_regular)) {  
		return true;  
	} else {
		return false;
	}
}

function ScrollFinalContenedor(id_elemento,tiempo_animacion=1000,salto_extra=0){
	let div = document.getElementById(id_elemento);
	//console.log(div.scrollHeight +'-'+ div.clientHeight)
	$('#' + id_elemento).animate({
		scrollTop: div.scrollHeight - div.clientHeight + salto_extra
	}, tiempo_animacion);	
}

function DefinirEventoSiguiendoSinLogin(){
    $('.session-iniciada-usuario').on('click', function (e) {            
        e.stopPropagation();
        
        $("#modal__login").modal("show");
    });
}

function ScroolTopContenedor(elemento){ 
    $(elemento).scrollTop(0);
}

function ScrollInicioPagina(){ 
    $("html, body").animate({ scrollTop: 0 }, "fast");
}

function EliminarElementoArreglo(arreglo,ubicacion)
{
	if (ubicacion > -1) {
		arreglo.splice(ubicacion, 1); 
	  }
}

function ExisteVariable(variable){
	if(variable === null){
		return false;
	}

	if (typeof variable !== 'undefined') {
		return true;
	}

	return false;
}

function SoloNumeros(e)
{
	var key = window.Event ? e.which : e.keyCode ;

	return (key >= 48 && key <= 57);
}

function LimitarLongitudInput(elemento){    
    if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength)
}

function RedireccionarPagina(url){
    location.href = url;
}

/*
Usado para verificar si se hizo click fuera de un elemento

para vuejs usar @click.stop para que no exista conflictos
$(document).click(function() {
    var container = $(".menu-lateral-derecha");
    if (app.$data.ver_opciones_orden && !container.is(event.target) && !container.has(event.target).length) {
        app.$data.ver_opciones_orden = false;            
    }        
});
*/

function CambiarTextoNavegador(titulo){
    document.title = titulo;
}

function DimensionesPantalla(){
    return {alto:window.screen.height,ancho:window.screen.width};
}

function EventoAgrandarElementoClick(elemento){
    $(elemento).click(function(evento) {
        let ancho = $(this).css( "width");

        evento.stopImmediatePropagation();

        if(ancho=='103px'){
            $(this).css( "width","206px");
        }else if(ancho=='206px'){
            $(this).css( "width","103px");
        }
    });
}

function RenviarCodigoActivacionLogin(contenedor_nombre_usuario,nombre_usuario="",lang=""){
    var usuario = nombre_usuario==''?$(contenedor_nombre_usuario).val():nombre_usuario;

    $("#error_login").append("<span id=\"icono-espera-reenvio-activacion\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>");

    if(usuario!=""){
        $.ajax({
            type: "GET",
             url: "/controller/reenviar_correo_validacion.php?usuario=" + usuario + '&lang=' + lang ,
            success: function(data) {
                swal("Good job!", data.mensaje, "success")
            },
            error: function() {
                //alert('Problemas para enviar correo de activacion');
                swal("Error",'Problemas para enviar correo de activacion', "error");
            },
            complete:function(){
                $( "#icono-espera-reenvio-activacion" ).remove();
            }
        });
    }else{
        //alert('Debe ingresar un usuario');
        swal("Se necesitan datos","Debe ingresar un usuario", "info");
    }
}

function RegistrarVisita(id_contenido,tipo_contenido,id_usuario,url)
{
    $.ajax({
        type: "POST",
        //url: "/controller/pagina/AgregarVisitaPagina.php?id_contenido=" + id_contenido + '&tipo_contenido=' + tipo_contenido +  '&id_usuario=' + id_usuario + '&url=' + url,
        url: "/controller/pagina/AgregarVisitaPagina.php",
        data:{id_contenido:id_contenido,tipo_contenido:tipo_contenido,id_usuario:id_usuario,url:url},
        success: function(data) {

        },
        error: function() {
            swal("Error",'Problemas para registrar visita', "error");
        },
        complete:function(){

        }
    });
}

function CamposFormularioConvertirJson(id_formulario)
{
    let respuestas_formulario = JSON.parse(JSON.stringify($(id_formulario).serializeArray())); 

    let respuestas  =   respuestas_formulario.map(function(respuesta) {
                            return respuesta.value;
                        });

    return respuestas;
}

function TiempoCuentaRegresiva(fecha_inicial,fecha_final)
{
    let distance = fecha_final - fecha_inicial;                                        
                                        
    let days    =   Math.floor(distance / (1000 * 60 * 60 * 24));
    let hours   =   Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    let minutes =   Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    let seconds =    Math.floor((distance % (1000 * 60)) / 1000);

    return {dias:days,horas:hours,minutos:minutes,segundos:seconds};
}

function CadenaTiempoCuentaRegresiva(fecha_inicial,fecha_final,separador_unidades='')
{
    let distancia = fecha_final - fecha_inicial;
    let cuenta_regresiva = ''

    if(distancia>0){
        tiempo = TiempoCuentaRegresiva(fecha_inicial,fecha_final);

        //cuenta_regresiva = (tiempo.dias>0?CompletarConCerosNumero(tiempo.dias) + (separador_unidades?separador_unidades:'d '):"") + (tiempo.horas>0||tiempo.dias>0?CompletarConCerosNumero(tiempo.horas) + (separador_unidades?separador_unidades:'h '):"") + (tiempo.minutos>0||tiempo.dias>0||tiempo.horas>0?CompletarConCerosNumero(tiempo.minutos) + (separador_unidades?separador_unidades:'m '):"") + CompletarConCerosNumero(tiempo.segundos) + (separador_unidades?'':'s ');
        cuenta_regresiva = CompletarConCerosNumero(tiempo.dias) + (separador_unidades?separador_unidades:'d ') + CompletarConCerosNumero(tiempo.horas) + (separador_unidades?separador_unidades:'h ') + CompletarConCerosNumero(tiempo.minutos) + (separador_unidades?separador_unidades:'m ') + CompletarConCerosNumero(tiempo.segundos) + (separador_unidades?'':'s ');
    }

    return cuenta_regresiva;
}

function CompletarConCerosNumero(numero, cantidad_digitos = 2)
{
    return `${numero}`.padStart(cantidad_digitos, '0');
}

function ExtensionNombreArchivo(nombre_archivo)
{
    let partes = nombre_archivo.split(".");

    return partes[partes.length - 1];
}

function ExtensionImagenValida(extension)
{
    if(extension){
        ext = extension.toLowerCase();

        if(ext=='png' || ext=='jpg' || ext=='jpeg'){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

function ExtensionPermitidasPublicaciones(extension){
    if(extension){
        ext = extension.toLowerCase();

        if(ExtensionImagenValida(extension) || ComprimidoPublicacionPermitida(extension)){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

function ComprimidoPublicacionPermitida(extension)
{
    if(extension){
        ext = extension.toLowerCase();

        if(ext=='rar' || ext=='zip' || ext=='cbz' || ext=='cbr' || ext=='pdf'){
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

function EjecutarFuncionDespuesDePausa(nombre_funcion=function(){},tiempo_milisegundos=500){
    setTimeout(function() { nombre_funcion() }, tiempo_milisegundos);
}

function MostrarModalAlerta(titulo,mensaje,tipo_alerta="success",texto_html=false){
    /* tipo:info, success,warning, error*/
    if(!texto_html)
        swal(titulo, mensaje, tipo_alerta);
    else
        swal({ html:true, title:titulo, text:mensaje});
}

function MostarModalAlertaAlternativo(mensaje){
    $("#aviso-modal #mensaje-aviso-modal").html(mensaje);

    $("#aviso-modal").modal("show");
}

function AbrirVentanaCompartirFacebook(url,ancho=800,alto=600){
    window.open('https://www.facebook.com/sharer/sharer.php?u=' + url,
        'facebook-share-dialog',
        'width=' + ancho + ',height=' + alto
    );

    return false;
}

function AbrirVentanaCompartirTwitter(url){
    window.open('https://twitter.com/intent/tweet?url=' + url);

    return false;
}

function AlturaRealElemento(elemento)
{
    return $(elemento).outerHeight();
}

function AlturaElemento(elemento)
{
    return $(elemento).innerHeight();
}

function AnchoElemento(elemento){
    $(elemento).innerWidth();
}

function EstaEnModoResponsive(){
    if(DimensionesPantalla().ancho<=480){
        return true;
    }else{
        return false;
    }
}

function EnteroAleatorio(maximo) {
    return Math.floor(Math.random() * maximo);
}

function SumarDiasFecha(fecha,dias=1){
    var result = new Date(fecha);
    result.setDate(result.getDate() + dias);
    return result;
}

function GenerarCadenaFecha(fecha){
    return new Date(fecha).toJSON().slice(0, 10);
}

function RecuperarUrlActual () {
    return window.location.href;
}

function CopiarTextoPortaPapeles(contendio) {
    navigator.clipboard.writeText(contendio);    
}

function AbrirClienteCorreo(correo_destinatario='',asunto='',mensaje=''){
    window.location.href = "mailto:" + correo_destinatario + "?subject=" + asunto + "&body=" + encodeURIComponent(mensaje);
}

function AbrirWhatsApp(mensaje=''){
    //window.location.href = "https://web.whatsapp.com://send?text=" + encodeURIComponent(mensaje);
    window.open('https://api.whatsapp.com/send/?text=' + encodeURIComponent(mensaje));  
}

function CopiarCodigoEmbebido(url,ancho="480px",alto="540px")
{
    let codigo_embebido = '<iframe src="' + url + '" style="border:none;" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" height="' + alto + '" width="' + ancho + '" allowfullscreen></iframe>';
    CopiarTextoPortaPapeles(codigo_embebido);

    var toast = new Toasty(options);

    toast.success("Codigo copiado");
}

function CambiarDireccionUrl(campo,valor){
    url = ModificacionParametrosUrl(window.location.href,campo,valor);
    window.history.replaceState('', '', url);
}

function GuardarUrlHistorial(url){
    history.pushState('','',url);
}

function GetUrlActualSinParametros(){
    /*
    const {
        host, hostname, href, origin, pathname, port, protocol, search
    } = window.location

    host // "ui.dev"
    hostname // "ui"
    href // "https://ui.dev/get-current-url-javascript/?comments=false"
    origin // "https://ui.dev"
    pathname // "/get-current-url-javascript/""
    port // ""
    protocol // "https:"
    search // "?comments=false"
    */

    return window.location.origin  + window.location.pathname;
}

function ObjetoEnStringUrl(objeto){
    return $.param(objeto);
}

function FechaObjetoDate(fecha)
{
    return fecha.getFullYear().toString() + "-" + (fecha.getMonth() + 1).toString().padStart(2, '0') + '-' + fecha.getDate().toString().padStart(2, '0');
}

function RecuperarDiferenciaArreglos(arreglo_a,arreglo_b)
{
    return arreglo_a.filter(x => !arreglo_b.includes(x));
}