/**************/ /* CONSTANTES */ /**************/ // Nombre de las cookies const COOKIE_LANGUAGE_LITERAL = "language"; const COOKIE_ACCEPT_LITERAL = "accept_cookies"; const COOKIE_CONTROL_LITERAL = "cookies_control"; const COOKIE_UPDATE_LITERAL = "cookies_update"; // Tiempos de duración de las cookies const COOKIE_LANGUAGE_TIME = 730; const COOKIE_ACCEPT_TIME = 730; const COOKIE_CONTROL_TIME = 1; const COOKIE_UPDATE_TIME = 365; // Colores de las pestañas de los productos cuando seleccionamos una entrada const TAG_ORANGE_COLOR_BACKGROUND_FFEBCD = "FFEBCD"; const TAG_COLOR_DESCR_F5F5F5_PURPLE = "#e6e6fa"; const TAG_COLOR_SPEC_F5F5F5_PURPLE = "#e8e8f9"; const TAG_COLOR_DESCR_FFEBCD_ORANGE = "#ffebcd"; const TAG_COLOR_SPEC_FFEBCD_ORANGE = "#fcedd6"; const TAG_DESCRIPTION_ID = "description"; const TAG_SPECIFICATION_ID = "specification"; // Este parámetro lo usamos en la URL para saber que hemos pulsado el link de ventana modal de la página de cookies, para que nos vuelva a mostrar // la ventana modal en el /home. Recuerda que al hacer un window.location.href toda instrucción que venga después de ella no se ejecuta por lo que tenemos que // andar con estos trucos para que se habra la ventanita const COOKIE_PARAM = "?cp=t"; // Significado del parámetro: cp=t => cookie page=true => Que venimos de la página de cookies.html habiendo pulsado el link"ventana modal" = true // Locale const LOCALE_EN_US = 'en-US'; //const LOCALE_EN = 'en'; const LOCALE_ES_ES = 'es-ES'; const LOCALE_ES = 'es'; // Acciones const ACTION_PRODUCTS = 'products'; const ACTION_ENTRIES = 'entries'; const ACTION_MENUS = 'category'; const ACTION_SUBMENUS = 'subcategory'; // Lo usaremos para checkear casa x milisegundos si hemos girado la pantalla de un móvil o tablet const CHECK_ORIENTATION_TIME = 500; // Lo usamos para que aparezca o no el botón de "Ir arriba" cuando hacemos scroll. 2000 entiendo que son ¿1950px? const LAST_SCROLL_TOP = 1950; // Constantes usadas para elimianr de la URL si es marca, menú o submenú cuando buscamos en la searchbox, que queda raro // Si cambiamos en el properties, cambiarlo aquí también const SEARCHBOXB_SPACE_BRAND_ES = " (marca)"; const SEARCHBOXB_SPACE_BRAND_EN = " (brand)"; const SEARCHBOXB_SPACE_MENU_ES = " (menú)"; const SEARCHBOXB_SPACE_MENU_EN = " (menu)"; const SEARCHBOXB_SPACE_SUBMENU_ES = " (submenú)"; const SEARCHBOXB_SPACE_SUBMENU_EN = " (submenu)"; const SAVE_ACTION = 'save'; const DELETE_ACTION = 'delete'; const DELETE_METHOD = 'DELETE'; const POST_METHOD = 'POST'; // ============================================================================ /************/ /* VARIABLES */ /************/ // Variable usada para checkear casa x milisegundos si hemos girado la pantalla de un móvil o tablet let checkOrientation = changeItemsCarousel(); // Variable usada para pintar el resto de entradas con javascript, las del botón "Mostrar más (entradas)". Será 1 al cargar la página home y sera este cant = 1 la que usemos // al llamar a getMoreEntries() un vez se haya cargado la página por primera vez (
) para que pueda formar el id restOf1, // que es el primero que usamos para cargar las entradas la primera vez que carga la página home.html. // Dentro de getMoreEntries() se va a ir incrementando para ir mostrando más entradas de 5 en 5 (si hay menos de 5 pués las que hubiese). let cant = 1; // Nos permite dormir antes de ejecutar la siguiente instrucción let sleepMs = function(ms){ return new Promise(resolve => setTimeout(resolve, ms)); }; // Mira cada 2 segundos si el elemento language existe, se ha pintado ya en la página. Es para poner cursor o no en el checkbox /* Descomentar si volvemos a poner language como disabled */ let checkLanguageExist = setInterval(function() { if ($('#language').length) { // Aquí preguntamos si el campo con id=language existe o no if(!document.getElementById("language").checked) document.getElementById("languageLabel").style.cursor = "pointer"; else document.getElementById("languageLabel").style.cursor = "default"; clearInterval(checkLanguageExist); // Con esto le decimos que pare ya de seguir checkeando cada 2 segusndos a ver si existe el campo language } }, 2000); // check every 2 s, si no no da tiempo a que haga bien el if(!document.getElementById("language").checked) // Mira cada 2 segundos si el elemento accept_cookies existe, se ha pintado ya en la página. Es para poner cursor o no en el checkbox /* Descomentar si volvemos a poner accept_cookies como disabled */ let checkAcceptCookiesExist = setInterval(function() { if ($('#accept_cookies').length) { // Aquí preguntamos si el campo con id=accept_cookies existe o no if(!document.getElementById("accept_cookies").checked) document.getElementById("accept_cookiesLabel").style.cursor = "pointer"; else document.getElementById("accept_cookiesLabel").style.cursor = "default"; clearInterval(checkAcceptCookiesExist); // Con esto le decimos que pare ya de seguir checkeando cada 2 segusndos a ver si existe el campo language } }, 2000); // check every 2 s, si no no da tiempo a que haga bien el if(!document.getElementById("acceptCookies").checked) // Redimensionamiento del titular de los productos según sea móvil o escritorio var isMobile = { Android: function() { return navigator.userAgent.match(/Android/i); }, BlackBerry: function() { return navigator.userAgent.match(/BlackBerry/i); }, iOS: function() { return navigator.userAgent.match(/iPhone|iPad|iPod/i); }, Opera: function() { return navigator.userAgent.match(/Opera Mini/i); }, Windows: function() { return navigator.userAgent.match(/IEMobile/i); }, any: function() { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); } }; // ============================================ /************/ /* LISTENERS */ /************/ /* // Gestionamos la barra de búsqueda y el icono de lenguaje según esté el navbar colapsado o no window.addEventListener('resize', () => { document.querySelectorAll('.search-bar').forEach((elementBar) => { if (window.innerWidth <= 1210) { // Usamos 1210 que es cuando colapsa el NavBar elementBar.style.display = 'none'; } else { elementBar.style.display = 'block'; } }); }); // Gestionamos la barra de búsqueda y el icono de lenguaje según esté el navbar colapsado o no window.addEventListener('resize', () => { document.querySelectorAll('.search-bar-collapsed').forEach((elementBarCollapsed) => { if (window.innerWidth <= 1210) { // Usamos 1210 que es cuando colapsa el NavBar elementBarCollapsed.style.display = 'block'; } else { elementBarCollapsed.style.display = 'none'; } }); }); */ // Llamar a la función para cambiar los iconos cuando la página se carga //window.addEventListener("load", changeIcons); window.addEventListener("load", () => { changeIcons(); getSearchBar(); }); // Ejecutar la misma función cuando el tamaño de la ventana cambie //window.addEventListener("resize", changeIcons); //window.addEventListener("resize", getSearchBar); window.addEventListener("resize", () => { changeIcons(); getSearchBar(); }); // NAVBAR document.addEventListener("DOMContentLoaded", function () { // NAVBAR: Ésto lo usamos para que se desplieguen solos los submenús cuando pasamos el ratón por encima del menú sin tener que hacer click para que se desplieguen, // sólo con hacer hover se despliegan const dropdowns = document.querySelectorAll(".nav-item.dropdown"); let timeout; // Variable para controlar el temporizador global dropdowns.forEach(dropdown => { const dropdownMenu = dropdown.querySelector(".dropdown-menu"); // Mostrar el submenú al pasar el cursor dropdown.addEventListener("mouseenter", function () { // Limpiar cualquier temporizador activo clearTimeout(timeout); // Ocultar otros submenús visibles dropdowns.forEach(otherDropdown => { if (otherDropdown !== dropdown) { const otherMenu = otherDropdown.querySelector(".dropdown-menu"); otherMenu.style.display = "none"; } }); // Mostrar el menú actual dropdownMenu.style.display = "block"; }); // Ocultar el submenú al salir del área (sin retraso o con mínimo retraso) dropdown.addEventListener("mouseleave", function () { timeout = setTimeout(() => { dropdownMenu.style.display = "none"; }, 50); // Muy breve retraso (50ms) o puedes eliminar este retraso }); }); }); // Hacemos esto porque en móvil no funciona "changeItemsCarousel" y en escritorio no funciona "changeItemsCarousel()" // Es que es flipante EDIT: parece que ya lo han arreglado... parece... /*if(isMobile.any()){ window.addEventListener("resize", changeItemsCarousel(), true); window.addEventListener("orientationchange", changeItemsCarousel(), true); window.addEventListener("deviceorientation", changeItemsCarousel(), true); window.addEventListener("resize", setEntryImageSize(), true); setInterval(checkOrientation(), 500); } else{*/ // Para lo de { passive: false }: // https://stackoverflow.com/questions/42101723/unable-to-preventdefault-inside-passive-event-listener // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#using_passive_listeners window.addEventListener("resize", changeItemsCarousel, { passive: false }); window.addEventListener("orientationchange", changeItemsCarousel, { passive: false }); //window.addEventListener("deviceorientation", changeItemsCarousel, true); // Funciona como el de arriba (orientationchange), al menos en este caso window.addEventListener("resize", setEntryImageSize, { passive: false }); window.addEventListener("orientationchange", setEntryImageSize, { passive: false }); setInterval(checkOrientation, CHECK_ORIENTATION_TIME); //} // Esto es por si giran el móvil que se llame también a la función "changeItemsCarousel" // ============================================================================ /*****************/ /* EVENTOS JQUERY */ /*****************/ $(document).ready(function(){ // Listamos el resto de las entradas por fila // Cuando pulsamos el botón de mostrar más (entradas), llama a la función getMoreEntries y muestra las siguientes 5 entradas (o si hay 3 pues 3) $("#showMore").on("click", getMoreEntries); // ======================================= // Hace que el tr entero de la tabla "últimas entradas" sea el link, si ponemos queda mal, solo sería link el texto $('#tableUE tr').click(function(){ window.location = $(this).attr('href'); // Ojoooo: aunque en HTML el atributo sea th:href aquí hacemos referencia a href simplemente return false; }); // ======================================= // COOKIES // Checkboxes de la página de cookies //función que activa o desactiva los checkboxes de la página de cookies según les demos con el puntero del ratón // Si la cookie accpetCookies no existe significa que nunca se ha aceptado las cookies, ni si quiera ha entrado en configuración de cookies // luego hay que mostrar la ventana modal de cookies hasta que las acepte o las configura, es un usuario nuevo. if (!getCookie(COOKIE_ACCEPT_LITERAL)) { $('#cookieModal').modal('show'); enablePointerLangAndAcceptCookies(); // Descomentar si volvemos a poner accept_cookies como disabled } // Ésto lo hacemos por si ha pulsado el botón de continuar navegando sin aceptar ninguna cookie y luego se mete en el enlace de políticas de cookies // y quiere habilitar las cookies estrictamente necesarias. No vamos a permitir que habiliten o deshabiliten a antojo como las no necesarias, o las habilitan y quedan // habilitadas para siempre o no las habilitan y quedan así, que si quieren habilitarlas salga la ventana modal y que las habiliten desde ahí /* Descomentar si volvemos a poner disabled en el input de language en el layout.html */ $("#language_Div").click(function() { if(!document.getElementById("language").checked){ // Ahora nos vamos a la paǵina principal porque si nos quedamos en la página de cookies, al estar las dos tablas (la de la página de cookies y la de la modal), al ser // la misma tabla (pintada desde lauout.html usando fragment) con mismos id, names, etc se hace la picha un lío por lo que es mejor salir de la página de cookies //para qu no convivan las dos tablas a la vez (que en verdad es la misma tabla) //window.location.href = "/"; window.location.href = setURLServer(); // Y aquí le decimos que muestre la ventana modal $('#cookieModal').modal('show'); } }); // Ésto lo hacemos por si ha pulsado el botón de continuar navegando sin aceptar ninguna cookie y luego se mete en el enlace de políticas de cookies // y quiere habilitar las cookies estrictamente necesarias. No vamos a permitir que habiliten o deshabiliten a antojo como las no necesarias, o las habilitan y quedan // habilitadas para siempre o no las habilitan y quedan así, que si quieren habilitarlas salga la ventana modal y que las habiliten desde ahí /* Descomentar si volvemos a poner disabled en el input de accept_cookies en el layout.html */ $("#acceptCookies_Div").click(function() { if(!document.getElementById("accept_cookies").checked){ // Ahora nos vamos a la paǵina principal porque si nos quedamos en la página de cookies, al estar las dos tablas (la de la página de cookies y la de la modal), al ser // la misma tabla (pintada desde lauout.html usando fragment) con mismos id, names, etc se hace la picha un lío por lo que es mejor salir de la página de cookies //para qu no convivan las dos tablas a la vez (que en verdad es la misma tabla) //window.location.href = "/"; window.location.href = setURLServer(); // Y aquí le decimos que muestre la ventana modal $('#cookieModal').modal('show'); } }); // Checkbox language /* Descomentar si volvemos a poner como checkeables a language y accept_cookies $("#language").click(function() { actDes(COOKIE_LANGUAGE_LITERAL, COOKIE_LANGUAGE_TIME, $("#language").val()); // Mostramos o no botón de lenguaje if($("#language").is(':checked') && document.getElementById("btnLanguage")) document.getElementById("btnLanguage").style.display = "block"; else if(!$("#language").is(':checked') && document.getElementById("btnLanguage")) document.getElementById("btnLanguage").style.display = "none"; }); */ // Checkbox accept_cookies /* Descomentar si volvemos a poner como checkeables a language y accept_cookies $("#accept_cookies").click(function() { actDes(COOKIE_ACCEPT_LITERAL, COOKIE_ACCEPT_TIME, null); }); */ // Checkbox cookies_control $("#cookies_control").click(function() { // Ambas instrucciones hacen lo mismo: //alert(document.getElementById("checkCookiesTable").parentNode.parentNode.getAttribute("id")); // Obtener el abuelo con javascript //alert($("#checkCookiesTable").parent().parent().attr('id')); // Obtener el abuelo con JQuery // Si no estamos en la ventana modal, guardamos la cookie directamente en cuanto hablitemos el checkbox. En la ventana modal hace falta presionar botón de guardar cookies /*if($("#checkCookiesTable").parent().parent().attr('id') == null || typeof $("#checkCookiesTable").parent().parent().attr('id') == 'undefined' || //https://stackoverflow.com/questions/3390396/how-can-i-check-for-undefined-in-javascript $("#checkCookiesTable").parent().parent().attr('id') != "cookieModalTable")*/ actDes(COOKIE_CONTROL_LITERAL, COOKIE_CONTROL_TIME, null); }); // Checkbox cookies_update $("#cookies_update").click(function() { // Ambas instrucciones hacen lo mismo: //alert(document.getElementById("checkCookiesTable").parentNode.parentNode.getAttribute("id")); // Obtener el abuelo con javascript //alert($("#checkCookiesTable").parent().parent().attr('id')); // Obtener el abuelo con JQuery // Si no estamos en la ventana modal, guardamos la cookie directamente en cuanto hablitemos el checkbox. En la ventana modal hace falta presionar botón de guardar cookies /*if($("#checkCookiesTable").parent().parent().attr('id') == null || typeof $("#checkCookiesTable").parent().parent().attr('id') == 'undefined' || //https://stackoverflow.com/questions/3390396/how-can-i-check-for-undefined-in-javascript $("#checkCookiesTable").parent().parent().attr('id') != "cookieModalTable")*/ actDes(COOKIE_UPDATE_LITERAL, COOKIE_UPDATE_TIME, null); }); // Si pulsamos el botón de aceptar todas las cookies... $("#acceptBtn").click(function(){ acceptCookies($("#acceptBtn").val()); // Mostramos botón de lenguaje if(document.getElementById("btnLanguage")) document.getElementById("btnLanguage").style.display = "block"; $("#cookieModal").modal("hide"); }); // Si pulsamos el botón de aceptar cookies estrictamente necesarias... $("#acceptStrictlyBtn").click(function(){ acceptStrictlyCookies($("#acceptStrictlyBtn").val()); // Mostramos botón de lenguaje /* Descomentar si vovlemos a poner como checkeables language y accept_cookies if(document.getElementById("btnLanguage")) document.getElementById("btnLanguage").style.display = "block"; */ $("#cookieModal").modal("hide"); }); // Si pulsamos el botón de aceptar cookies seleccionadas... $("#acceptSelected").click(function(){ acceptSelectedCookies($("#acceptSelected").val()); // Mostramos botón de lenguaje /* Descomentar si volvemos a poner como checkeables a language y accept_cookies if(document.getElementById("btnLanguage") && $("#language").is(':checked')) document.getElementById("btnLanguage").style.display = "block"; else document.getElementById("btnLanguage").style.display = "none"; */ $("#cookieModal").modal("hide"); }); // Si pulsamos en refuse all cookies $("#closeBtn").click(function(){ // Borramos las posibles cookies que haya eraseAllCookies(); // Si no acepta ninguna cookie, ni si quiera la de lenguaje, entonces no mostramos el botón de elegir idioma /* Descomentar si volvemos a poner como checkeables a language y accept_cookies if(document.getElementById("btnLanguage")) document.getElementById("btnLanguage").style.display = "none"; */ // Hacemos comprobarCheckBox(...) para que visualmente se muevan los checkboxes (si es que están en enabled) a disabled mientras desaparece la ventana // modal, sólo es por efecto óptico y no porque se necesite hacer //comprobarCheckBox("language"); // Descomentar si volvemos a dejar seleccionar language y accept_cookies //comprobarCheckBox("accept_cookies"); // Descomentar si volvemos a dejar seleccionar language y accept_cookies // Escondemos la ventana modal $('#cookieModal').modal('hide'); }); // Si pulsamos el botón de resetear cookies (solo para desarrollo) $("#btnReset").click(async function(){ // Borramos las cookies eraseAllCookies(); // Recargamos la página (realmente no haría falta pero si no lo hacemos quedan los checks enabled auqnue daría igual y a lo mejor asta preferible) location.reload(); //Pausamos la carga de la ventana modal 1 segundo, si no, como va rápido, muestra la modal y luego recarga y vuelve a mostrar la modal y queda raro //Forma asíncrona (poner async que va antes de function) await sleepMs(1000); // 1 segundo $("#cookieModal").modal("show"); /* Forma no asíncrona (quitar async arriba, en $("#btnReset").click(async function(){...}) setTimeout(function(){ $("#cookieModal").modal("show"); }, 1000); // 1 segundo de intervalo */ }); // Botón que vuelve a la ventna modal principal desde configure $("#goBackBtn").click(function(){ //reset(); //$("#cookieModalConf").modal("hide"); //$("#cookieModal").modal("show"); document.getElementById("cookieModalLabel").style.display = "block"; document.getElementById("configureBtn").style.display = "block"; document.getElementById("cookieModalText").style.display = "block"; /* if(document.getElementById("btnLanguageCookies")) document.getElementById("btnLanguageCookies").style.display = "block"; */ document.getElementById("cookieModalTable").style.display = "none"; document.getElementById("goBackBtn").style.display = "none"; //document.getElementById("acceptSelected").style.display = "none"; //document.getElementById("acceptStrictlyBtn").style.display = "none"; document.getElementById("acceptStrictlyBtn").style.display = "block"; //document.getElementById("closeBtn").style.display = "none"; document.getElementById("cookieModalLabelSettings").style.display = "none"; // Desmarcamos el checkbox de las estricatemente necesarias pero aún no guardamos ninguna cookie /* Descomentar si volvemos a poner language y accept_cookies como disabled */ document.getElementById("language").checked = ""; document.getElementById("language_actdes").value = disabled; document.getElementById("accept_cookies").checked = ""; document.getElementById("accept_cookies_actdes").value = disabled; }); // Esto se ejecuta cuando la ventana modal se abre /* $('#cookieModal').on('shown.bs.modal', function () { $('#myInput').trigger('focus') // Ponemos el foco en un campo input }) */ // Esta función se ejecuta cuando la ventana modal se cierra. La necesitamos para que quite de la URL el parámetro /?c=t que le pusimos // en la función modalWindow(), si es que se lo pusimos, claro... $("#cookieModal").on('hidden.bs.modal', function () { if(window.location.search == COOKIE_PARAM) /* Explicación interesante: https://qastack.mx/programming/22753052/remove-url-parameters-without-refreshing-page 1- Para modificar la URL actual y añadir / inyección que (el nuevo URL modificada) como una nueva entrada a la lista de URL de la historia, el uso pushState: window.history.pushState({}, document.title, "/" + "my-new-url.html"); 2- Para reemplazar la URL actual sin agregarla a las entradas del historial, use replaceState: window.history.replaceState({}, document.title, "/" + "my-new-url.html"); 3- Dependiendo de su lógica de negocio , pushStateserá útil en casos como: - Desea apoyar el botón de retroceso del navegador - Desea crear una nueva URL, agregar / insertar / insertar la nueva URL en las entradas del historial y convertirla en la URL actual - Permitiendo a los usuarios marcar la página con los mismos parámetros (para mostrar el mismo contenido) - Para acceder mediante programación a los datos a través del stateObjanálisis luego desde el ancla */ window.history.replaceState({}, document.title, "/home"); }); // Esta función carga el combo de search cada vez que hacemos click sobre él /* $('#searchInput').click(function(){ let urlServer = setURLServer(); // Si estamos en localhost quedaría http://localhost:8080/ y si estamos en Tomcat externo quedaría http://192.168.1.140:8080/armark/ $.ajax({ url: urlServer + 'search/getEntries', type: 'GET', async : true, success: function(respuesta) { if(respuesta != null && respuesta != "" && respuesta != 'undefined' && respuesta.data.length > 0){ // Si hay entradas para mostrar... let entriesSearchBox = []; let idsSearchBox = []; let tablasSearchBox = []; $.each(respuesta.data, function(index, elemento) { // elemento[0] es el id // elemento[1] es el titulo, que es lo que queremos guardar en el array // elemento[2] es el nombre de la tabla a la que pertenece cada resultado idsSearchBox.push(elemento[0]); entriesSearchBox.push(elemento[1]); tablasSearchBox.push(elemento[2]); }); autocomplete(document.getElementById("searchInput"), document.getElementById("searchInputId"), document.getElementById("searchInputTabla"), idsSearchBox, entriesSearchBox, tablasSearchBox); } }, error: function() { console.log("No se ha podido obtener la información"); window.location.href = urlServer + "error"; // Dejándo esto así nos lleva al error 500. Si ponemos /error/500 nos lleva la 404 y queremos el 500 //alert("No se ha podido obtener la información"); } }); return false; }); */ // NOTA: USAREMOS OPACITY Y NO DISPLAY:NONE O HIDE O SHOW O FADEIN O FADEOUT PORQUE NECESITAMOS QUE LE BOTÓN ESTÉ PINTADO DESDE EL PRINCIPIO // PARA QUE EL BOTÓN DE "VER MÁS" NO SE DESCOLOQUE CUANDO APAREZCA EL BOTÓN FLOTANTE. CON DISPLAY:NONE LO QUE HACEMOS ES QUE EL BOTÓN NO SE PINTE // Y LUEGO SÍ SE PINTA Y DESCOLOCA EL BOTÓN "VER MÁS". CON OPACITY HACEMOS QUE EL BOTÓN FLOTANTE ESTÉ PINTADO PERO INVISIBLE Y ASÍ PODEMOS COLOCAR // EL BOTÓN "VER MÁS" CENTRADO Y QUE NO SE NOS DESCENTRE // Cuando pulsamos en el "Ver más" para ver más entradas, mostramos le botón de subir arriba /*$("#showMore").click(function() { //$("#floatingBtn").fadeIn(1000); //$("#floatingBtn").show(); //document.getElementById("spanShowMore").classList.add("ml-3"); //document.getElementById("spanShowMore").classList.add("pl-3"); //document.getElementById("spc").classList.add("mb-5"); //document.getElementById("spc").classList.add("pb-5"); });*/ // Cuando pulsamos el botónd e subir arriba, pues subimos arriba $("#floatingBtn").click(function() { $('body, html').animate({ scrollTop: '0px' }, 300); document.getElementById("floatingBtn").style.opacity = "0"; //$("#floatingBtn").hide(); //$("#floatingBtn").fadeOut(300); //document.getElementById("showMore").style.removeProperty("margin-left"); }); // Llama a la función onScroll cuando hacemos scroll en la pantalla home // Con ésto hacemos que paraezca o desaparezca el botón de "ir a arriba" según hagamos scroll // ÉSTO PARA WIDE SCREENS $(window).on('scroll', onScroll); // For wide screens // Y ÉSTO ES PARA MÓVILES Y TABLETS $(document.body).scroll(function(){ if ($(document.body).scrollTop() >= LAST_SCROLL_TOP) { //$("#floatingBtn").show(); //$("#floatingBtn").fadeIn(300); if(document.getElementById("floatingBtn")) document.getElementById("floatingBtn").style.opacity = "1"; //document.getElementById("showMore").style.marginLeft = "13%"; } else{ //$("#floatingBtn").hide(); //$("#floatingBtn").fadeOut(300); if(document.getElementById("floatingBtn")) document.getElementById("floatingBtn").style.opacity = "0"; //document.getElementById("showMore").style.removeProperty("margin-left"); } }); //$(document.body).on('touchstart', onScroll); // For mobiles and tablets //$(document.body).on('touchmove', onScroll); // For mobiles and tablets //$(document.body).on('touchend', onScroll); // For mobiles and tablets //$(document.body).on('touchcancel', onScroll); // For mobiles and tablets }); // ============================================ /*************/ /* FUNCIONES */ /*************/ // Función que setea una barra de búsqueda u otra dependiendo si la navbar está expandida o colapsada function getSearchBar(){ /* let placeHolder = "¿Qué estás buscando?"; // En español por defecto if(getCookieValue(COOKIE_LANGUAGE_LITERAL) == null || getCookieValueCOOKIE_LANGUAGE_LITERAL) == LOCALE_EN_US) placeHolder = "What are you looking for?"; */ if (window.innerWidth <= 1210) { let sib = document.querySelector('.search-input-bottom'); if(sib) sib.remove(); if(document.getElementById('liSearchBar')) document.getElementById('liSearchBar').remove(); // Creamos desde aquí el li de ulSearchBarCollapsed if(!document.getElementById("liSearchBarCollapsed")) document.getElementById("ulSearchBarCollapsed").innerHTML += getLiSearchBar("liSearchBarCollapsed", TXT_SEARCH_BUTTON); } else if (window.innerWidth > 1210 && window.innerWidth <= 1585) { if(document.getElementById('liSearchBarCollapsed')) document.getElementById('liSearchBarCollapsed').remove(); if(document.getElementById('ulSearchBar')){ //document.getElementById('liMagnifying').innerHTML = '' + shortAndSeoDescription + '
' + '' + elemento[3] + '' + '