// Muestra efecto 'cargando'. //Variable global para controlar las veces que se muestra la pantalla de carga. var ncargando = 0; var timeoutvar; function cargando(urlbase) { ncargando++; if (!$("#cargando").length) { var ancho = $(window).width(); var alto = $(window).height(); if (urlbase) { var codigo = "
"; } else { var codigo = "
"; } $('body').prepend(codigo); $("#cargando").fadeIn(); timeoutvar = setTimeout(function () { $("#msj_cargando_funcion").html("Cargando . . ."); $("#msj_cargando_funcion").css('color', '#000000'); timeoutvar = setTimeout(function () { $("#msj_cargando_funcion").html("Estamos gestionando su petición . . ."); timeoutvar = setTimeout(function () { $("#msj_cargando_funcion").html("Está tardando más de lo esperado . . .
Tenga un poco de paciencia."); timeoutvar = setTimeout(function () { $("#msj_cargando_funcion").html("Ha acurrido algún error, inténtelo más tarde."); $("#msj_cargando_funcion").css('color', '#db4128'); timeoutvar = setTimeout(function () { cargado(); }, 90000); }, 85000); }, 30000); }, 5000); }, 0); } } // Quita efecto 'cargando'. function cargado() { clearTimeout(timeoutvar); $("#cargando").fadeOut(function () { $("#cargando").remove(); }); ncargando = 0; } // Quita efecto 'cargando' FORZADO: Eliminará la pantalla cargando independientemente de las llamadas que tenga pendiente. function cargado_forzado() { clearTimeout(timeoutvar); $("#cargando").fadeOut(function () { $("#cargando").remove(); }); } // Configura el alto del navegador como alto mínimo a un elemento. function altoMinAutomaticoWindow(idcontenedor) { var altoMinimo = $(window).height(); $("#" + idcontenedor).css('min-height', altoMinimo); } function altoMinAutomaticoDocument(idcontenedor) { var altoMinimo = $(document).height(); $("#" + idcontenedor).css('min-height', altoMinimo); } // Aplica el alto al alto más alto entre document o window. function altoMinAutomaticoDocumentWindow(idcontenedor) { var altoDocumento = $(document).height(); var altoVentana = $(window).height(); if (altoDocumento > altoVentana) { $("#" + idcontenedor).css('min-height', altoDocumento); } else { $("#" + idcontenedor).css('min-height', altoVentana); } } // Aplica el alto al alto más alto entre document o window. function altoMinAutomaticoHeader() { var altoCentroBox = $(".centroBox").height(); var altoVentana = $(window).height(); var altoHeader = $("header").height(); if (altoCentroBox > 462 || altoVentana > 462) { if (altoCentroBox > altoVentana) { $("header").css('min-height', altoCentroBox); } else { $("header").css('min-height', altoVentana); } } else { $("header").css('min-height', 462); } } var ncargandologin = 0; function cargando_login() { ncargandologin++; if ($("#cargandologin").length == 0) { var ancho = $(window).width(); var alto = $(window).height(); var codigo = "
"; $('body').prepend(codigo); $("#msj_cargando_funcion").html("Cargando . . ."); $("#msj_cargando_funcion").css('color', '#000000'); } } // Quita efecto 'cargando login'. function cargado_login() { if (ncargandologin != 0) { ncargandologin--; } if (ncargandologin == 0) { clearTimeout(timeoutvar); $("#cargandologin").fadeOut(function () { $("#cargandologin").remove(); }); } } // Diálogo de confirmación. function popup_confirm_full_open(tipo, callback) { switch (tipo) { case 'eliminar': var frase = "¿Seguro que desea eliminarlo?" break; default: var frase = "¿Desea continuar?" break; } var ancho = $(window).width(); var alto = $(window).height(); var codigo = "
"; codigo += "
"; codigo += "

" + frase + "

"; codigo += "
"; codigo += ""; codigo += ""; codigo += "
"; codigo += "
"; codigo += "
"; $('body').prepend(codigo); $("#popup_full").fadeIn(); } // Cerrar diálogo de confirmación. function popup_confirm_full_close() { $("#popup_full_indoor").slideUp('', function () { $("#popup_full").fadeOut(); }); } // Añadir a cookie function setCookie(c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + expiredays); document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()); } // Mostrar el valor de cierto registro de la cookie function getCookie(c_name) { if (document.cookie.length > 0) { c_start = document.cookie.indexOf(c_name + "="); if (c_start != -1) { c_start = c_start + c_name.length + 1; c_end = document.cookie.indexOf(";", c_start); if (c_end == -1) c_end = document.cookie.length; return unescape(document.cookie.substring(c_start, c_end)); } } return ""; } // Comprueba si se habían aceptado las cookies, para mostrar o no el mensaje. function comprobarCookieMensaje() { if (!getCookie("acceptCookie")) { // Mostramos aviso de cookie. setTimeout(function () { $("body").append(""); $("#mensaje_cookies").slideDown(1000); $("#aceptarCookies").click(function () { setCookie("acceptCookie", 1, 365); $("#mensaje_cookies").slideUp(1000); }); }, 1000); } } function comprobarCambioHora(fecha) { var result = "nada"; var comprobacion = false; var separated = fecha.split("-"); var dias_mes = DiasMes(separated[1], separated[0]); var f = ""; var fe = ""; for (var i = dias_mes; i > 0; i--) { f = separated[0] + "-" + separated[1] + "-" + i; var ms = Date.parse(f); var aux = new Date(ms); if (aux.getDay() == 0 && comprobacion == false) { comprobacion = true; fe = f; } } if (comprobacion == true && fecha == fe) { if (separated[1] == "03") { result = "adelanta"; } if (separated[1] == "10") { result = "atrasa"; } } return result; } function DiasMes(mes, anio) { if (mes[0] == 0) { mes = mes[1]; } var dias = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var ultimo = 0; if (mes == 2) { var fecha = new Date(anio, 1, 29); var vermes = fecha.getMonth(); if ((vermes + 1) != mes) { ultimo = 28; } } if (ultimo == 0) { ultimo = dias[mes]; } return ultimo; } // Desplegar y ocultar menú recordando posición // por cookies function accionMenu(check) { if (getCookie("menu") == "" || !getCookie("menu")) { setCookie("menu", 1, null); var check = true; } if (!check) { if (getCookie("menu") == 1) { setCookie("menu", 0, null); } else if (getCookie("menu") == 0) { setCookie("menu", 1, null); } } if (getCookie("menu") == 1) { // Mostrar barra busqueda if ($("#box_buscador_master_resultado").length) { $("#box_buscador_master_resultado").show("slow"); } // Mostrar menú $("#centroBox").addClass("transicion_centroBox"); $("#centroBox").removeClass("centroBoxMax"); setTimeout(function () { $("#centroBox").removeClass("transicion_centroBox"); }, 600); //Cuando termina transición, eliminamos la clase. $("#centroBox").addClass("marginCentro"); $("#menuResponsive").removeClass("menuOculto"); $("#menuResponsive").addClass("menuFlotante"); $("#logoMax").removeClass("oculto"); $("#dispositivos").removeClass("oculto"); $("#iconos_menu").removeClass("oculto"); $("#logoMin").addClass("oculto"); $(".iconResp").addClass("oculto"); $("#header_usuario").removeClass("header_usuario_movil"); // $("#header_usuario").removeClass('oculto'); } else { // Ocultar menú if ($("#box_buscador_master_resultado").length) { $("#box_buscador_master_resultado").hide(); } $("#centroBox").removeClass("marginCentro"); $("#centroBox").addClass("centroBoxMax"); $("#menuResponsive").addClass("menuOculto"); $("#logoMin").removeClass("oculto"); $(".iconResp").removeClass("oculto"); $("#logoMax").addClass("oculto"); $("#dispositivos").addClass("oculto"); $("#iconos_menu").addClass("oculto"); $("#header_usuario").addClass("header_usuario_movil"); setTimeout(function () { $("#menuResponsive").removeClass("menuFlotante"); }, 500); } } //0: Ocultar menú. 1: Mostrar menú. function menu_mostrar_ocultar(accion) { if (accion == 1) { //Mostramos menú. setCookie("menu", 1, null); $("#centroBox").addClass("transicion_centroBox"); $("#centroBox").removeClass("centroBoxMax"); setTimeout(function () { $("#centroBox").removeClass("transicion_centroBox"); }, 600); //Cuando termina transición, eliminamos la clase. $("#centroBox").addClass("marginCentro"); $("#menuResponsive").removeClass("menuOculto"); $("#menuResponsive").addClass("menuFlotante"); $("#logoMax").removeClass("oculto"); $("#dispositivos").removeClass("oculto"); $("#logoMin").addClass("oculto"); $(".iconResp").addClass("oculto"); $("#dispositivos").removeClass("oculto"); $("#iconos_menu").removeClass("oculto"); $("#header_usuario").removeClass("header_usuario_movil"); // $("#header_usuario").removeClass('oculto'); } else if (accion == 0) { //Ocultamos menú. setCookie("menu", 0, null); $("#centroBox").removeClass("marginCentro"); $("#centroBox").addClass("centroBoxMax"); $("#menuResponsive").addClass("menuOculto"); $("#logoMin").removeClass("oculto"); $(".iconResp").removeClass("oculto"); $("#logoMax").addClass("oculto"); $("#dispositivos").addClass("oculto"); $("#iconos_menu").addClass("oculto"); $("#header_usuario").addClass("header_usuario_movil"); setTimeout(function () { $("#menuResponsive").removeClass("menuFlotante"); }, 500); // $("#header_usuario").addClass('oculto'); } } //Muestra menú al deslizar touch de izquierda a derecha. function muestra_menu_touch() { var myElement = document.getElementsByTagName('body'); $(myElement).swipe({ swipeLeft: function (event, direction, distance, duration, fingerCount, fingerData) { //Ocultar menú. menu_mostrar_ocultar(0); }, swipeRight: function (event, direction, distance, duration, fingerCount, fingerData) { //Mostrar menú. menu_mostrar_ocultar(1); }, threshold: 100, maxTimeThreshold: 400, fingers: 1 }); } //Devuelve la Urlbase. function urlbase() { $.post("../php_script/obtener_urlbase.php") .done(function (data) { return data; }); } //Devuelve el ancho de la ventana del navegador en px. function calcula_ancho_ventana() { return $(window).width(); } //Devuelve el alto de la ventana del navegador en px. function calcula_alto_ventana() { return $(window).height(); } //Pasamos id box y modifica el alto al 100% ventana. function ventana_full_windows(id_elemento) { var alto_minimo = calcula_alto_ventana(); var alto_elemento = $("#" + id_elemento).height(); if (alto_elemento < alto_minimo) { alto_minimo = alto_minimo - 75; $("#" + id_elemento).css('min-height', alto_minimo + 'px'); } } // Función para dejar en blanco un campo input. function reset_input(idelemento) { document.getElementById(idelemento).value = ""; } // Añadir nuevo campo input EMAIL/SMS. function clone_input(class_elementos, id_elementos) { //Numero de elementos con la CLASS pasada. var num = $('.' + class_elementos).length; var newNum = (num + 1); if (num < 5) { //Límite 5 elementos //Duplicamos el último elemento con la ID pasada. var newElem = $('#' + id_elementos + num).clone().attr('id', id_elementos + newNum).attr('value', '').fadeIn(250); newElem.children(':last').attr('id', 'name' + newNum).attr('name', 'name' + newNum); $('#' + id_elementos + num).after(newElem); } else { alert("No se pueden añadir más registros"); } } // Muestra las distintas alarmas de usuario al clicar sobre // caja de usuario. function muestra_alarmas_usuario(id_elemento) { if ($("#" + id_elemento).hasClass('usuario_alarmas_box_mostrar')) { //Esconder. $("#" + id_elemento).removeClass("usuario_alarmas_box_mostrar"); // $("#usuario_1").css('height', '30px'); } else { //Mostrar. $("#" + id_elemento).addClass("usuario_alarmas_box_mostrar"); // $("#usuario_1").css('height','100px'); } } // Ejemplo: // modificarFecha(-10) => restara 10 dias a la fecha actual // modificarFecha(30) => añadira 30 dias a la fecha actual function modificarFecha(days) { milisegundos = parseInt(35 * 24 * 60 * 60 * 1000); fecha = new Date(); day = fecha.getDate(); // el mes es devuelto entre 0 y 11 month = fecha.getMonth() + 1; year = fecha.getFullYear(); // document.write("Fecha actual: "+); //Obtenemos los milisegundos desde media noche del 1/1/1970 tiempo = fecha.getTime(); //Calculamos los milisegundos sobre la fecha que hay que sumar o restar... milisegundos = parseInt(days * 24 * 60 * 60 * 1000); //Modificamos la fecha actual total = fecha.setTime(tiempo + milisegundos); day = fecha.getDate(); month = fecha.getMonth() + 1; year = fecha.getFullYear(); // document.write("Fecha modificada: "+day+"/"+month+"/"+year); return year + "-" + month + "-" + day; } /** * [ Resta o suma días a una fecha pasada] * @param {[Sumar:10 Restar:-10]} days [Días a sumar o restar] * @param {[2016-05-05]} fecha [Fecha de partida] * @return {[2016-05-05]} [Devuelve la fecha con los días restados] */ function modificarFechaPasada(days, fecha) { var fecha_temp = fecha.split("-"); // var min_temp = fecha_temp[2].split( " " ); var milisegundos = parseInt(35 * 24 * 60 * 60 * 1000); var fecha = new Date(fecha_temp[0], (fecha_temp[1] - 1), fecha_temp[2], 00, 00, 00, 00); // var fecha = new Date(fecha); var day = fecha.getDate(); // el mes es devuelto entre 0 y 11 month = fecha.getMonth() + 1; year = fecha.getFullYear(); // document.write("Fecha actual: "+); //Obtenemos los milisegundos desde media noche del 1/1/1970 tiempo = fecha.getTime(); //Calculamos los milisegundos sobre la fecha que hay que sumar o restar... milisegundos = parseInt(days * 24 * 60 * 60 * 1000); //Modificamos la fecha actual total = fecha.setTime(tiempo + milisegundos); day = fecha.getDate(); month = fecha.getMonth() + 1; year = fecha.getFullYear(); // document.write("Fecha modificada: "+day+"/"+month+"/"+year); return year + "-" + ( month < 10 ? '0' : '' ) + month + "-" + ( day < 10 ? '0' : '' ) + day; } /** * [Convierte una fecha de formato front (dd/mm/yyyy) a formato server (yyyy-mm-dd)] * @param {dd/mm/yyyy} fecha [Fecha para convertir] * @return {yyyy-mm-dd} [Devuelve la fecha convertida] */ function fechaToServer(fecha) { var fecha_server = fecha.split("/"); fecha_server = fecha_server[2] + "-" + fecha_server[1] + "-" + fecha_server[0]; return fecha_server } /** * [Convierte una fecha de formato server (yyyy/mm/dd) a formato usuario (front) (dd-mm-yyyy)] * @param {yyyy-mm-dd} fecha [Fecha para convertir] * @return {dd/mm/yyyy} [Devuelve la fecha convertida] */ function fechaToUser(fecha) { var fecha_user = fecha.split("-"); fecha_user = fecha_user[2] + "/" + fecha_user[1] + "/" + fecha_user[0]; return fecha_user } /** * [Convierte una fecha de formato server (yyyy/mm/dd) a formato usuario (front) (dd-mm-yyyy)] * @param {yyyy-mm-dd 00:00:00} fecha [Fecha para convertir] * @return {dd/mm/yyyy 00:00:00} [Devuelve la fecha convertida] */ function fechaHorasToUser(fecha) { var fecha_user = fecha.split(" "); var hora = fecha_user[1]; fecha_user = fecha_user[0].split("-"); fecha_user = fecha_user[2] + "/" + fecha_user[1] + "/" + fecha_user[0] + " " + hora; return fecha_user } /** * [Convierte una fecha en formato 'yyyy-mm-dd 00:00:00' 'dd/mm/yyyy 00h.'] * @param {yyyy-mm-dd 00:00:00} fecha [Fecha para convertir] * @return {dd/mm/yyyy 00h.} [Devuelve la fecha convertida] */ function fechaConHoras(fecha) { var fechaTemp = fechaHorasToUser(fecha); fechaTemp = fechaTemp.split(":"); fechaReturn = fechaTemp[0] + fechaTemp[1] + fechaTemp[2] + "h."; return fechaTemp; } function bloqueaEnergiaInicio() { $.post("php_script/comprueba_energia.php") .done(function (data) { var datos = JSON.parse(data); if (datos[0] == 0) { //Electricidad $("#electricidad_box").append("No contratado"); $("#mini3").addClass("box_energia_disabled"); $("#mini3>a").removeAttr("href"); } else { $("#mini3").addClass("minibox_energia_color"); } if (datos[1] == 0) { //Gas $("#gas_box").append("No contratado"); $("#mini2").addClass("box_energia_disabled"); $("#mini2>a").removeAttr("href"); } else { $("#mini2").addClass("minibox_energia_color"); } if (datos[2] == 0) { //Agua $("#agua_box").append("No contratado"); $("#mini1").addClass("box_energia_disabled"); $("#mini1>a").removeAttr("href"); } else { $("#mini1").addClass("minibox_energia_color"); } if (datos[3] == 0) { //Vapor $("#vapor_box").append("No contratado"); $("#mini4").addClass("box_energia_disabled"); $("#mini4>a").removeAttr("href"); } else { $("#mini4").addClass("minibox_energia_color"); } if (datos[4] == 0) { //Temperatura $("#temperatura_box").append("No contratado"); $("#mini5").addClass("box_energia_disabled"); $("#mini5>a").removeAttr("href"); } else { $("#mini5").addClass("minibox_energia_color"); } }); } //Marca todos los checkbox de la clase pasada. function marcar_todo(class_elementos) { $("." + class_elementos).prop("checked", true); } //Desmarca todos los checkbox de la clase pasada. function marcar_nada(class_elementos) { $("." + class_elementos).prop("checked", false); } // Funciones para interacción con pantallas táctiles // *Es necesario la librería Hammer.js function dobletap(idelemento) { var myElement = document.getElementById(idelemento); var mc = new Hammer(myElement); mc.on("doubletap", function (ev) { alert(idlemento); }); } // /Funciones para interacción con pantallas táctiles // Primera letra de cadena en mayúscula. function primera_letra_mayuscula(string) { return string.charAt(0).toUpperCase() + string.slice(1); } /*#############################################################*/ /*# POPUP ALL #*/ /*# --------------------------------------------------------- #*/ /*# -Descripción- #*/ /*# Clase para generar un popup que inutiliza el resto de la #*/ /*# pantalla. #*/ /*# #*/ /*#############################################################*/ var popoverfull = function () { //Velocidad de animación this.speed = 300; // Ancho máximo del contenedor. this.setMaxwidth = function (value) { this.maxwidth = value; } //Z-index this.z_index = 1000; // Ancho máximo del contenedor. this.setZindex = function (value) { this.z_index = value; } this.setTitle = function (value) { this.title = value; } // Código html del contenedor. this.setContent = function (value) { this.content = value; } this.showHeight = function () { var alto_documento = $(window).height(); alert("El ato es: " + alto_documento + "px"); } // Muestra el popover. this.open = function () { var alto = $(window).height(); if (!this.maxwidth) { this.maxwidth = 500; } if (!this.content) { this.content = ""; } // Creación de html para popover. var ventana = "
"; ventana += "
"; ventana += ""; ventana += "
"; ventana += "
"; ventana += "

" + this.title + "

"; ventana += "
"; ventana += this.content; ventana += "
"; ventana += "
"; // Añadir popover al principio del body. $("body").prepend(ventana); // Animación de persiana al mostrar popover. $("#popoverfull").animate( {'top': '0px'}, this.speed, function () { $("#popoverfull_close").fadeIn(500); }); $("#popoverfull_close:hover").css({ width: '25px' }); // Recalcular cambio alto al redimensionar navegador. $(window).resize(function () { var alto = $(window).height(); $("#popoverfull").height(alto); }); // Ocultar scroll body. $("body").css("overflow-y", "hidden"); // Botón para cerrar popover. $("#popoverfull_close").click(function () { close(); }); // Pulsar ESC para cerrar popover. $(document).bind('keydown', function (e) { if (e.which == 27) { close(); }; }); } var close = function () { var alto = $(window).height(); $("#popoverfull_close").fadeOut(); $("#popoverfull").animate({'top': "-" + alto + 'px'}, this.speed, function () { $("#popoverfull").remove(); $("body").css("overflow-y", "scroll"); }); } // Cierra el popover. this.close = function () { cierre(); } } /*#############################################################*/ /*# Formatear número #*/ /*# --------------------------------------------------------- #*/ /*# -Descripción- #*/ /*# Pasamos un número y lo devuelve formateado: 1.000,11 #*/ /*# #*/ /*# #*/ /*#############################################################*/ function formatear_numero(numero) { numero += ''; numero = numero.replace(".", ","); x = numero.split('.'); x1 = x[0]; x2 = x.length > 1 ? ',' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + '.' + '$2'); } return x1 + x2; } /********************************** /* /* Mantenemos la altura de la cabecera al 100% del body. /* /**********************************/ function altura_header() { $('body').mutate('height', function () { var body_height = $('body').height(); console.log('Body cambiado alto'); if (body_height > 580) { // $('header').css('height', body_height); console.log('Modificado tamaño'); } }); } /********************************** /* /* END /* /**********************************/ /********************************** /* /* Piloto indicador de estado: Pasamos id elemento y numero de estado. /* 0:Good, 1:Regular, 2:Bad. /**********************************/ function pilotoIndicadorEstador(idElemento, estado) { switch (estado) { case 0: // Piloto verde. $("#" + idElemento).addClass("pilotoIndicador_good"); $("#" + idElemento).removeClass("pilotoIndicador_regular"); $("#" + idElemento).removeClass("pilotoIndicador_bad"); $("#" + idElemento).removeClass("pilotoIndicador_alert"); break; case 1: // Piloto naranja. $("#" + idElemento).addClass("pilotoIndicador_regular"); $("#" + idElemento).removeClass("pilotoIndicador_good"); $("#" + idElemento).removeClass("pilotoIndicador_bad"); $("#" + idElemento).removeClass("pilotoIndicador_alert"); break; case 2: // Piloto rojo. $("#" + idElemento).addClass("pilotoIndicador_bad"); $("#" + idElemento).removeClass("pilotoIndicador_good"); $("#" + idElemento).removeClass("pilotoIndicador_regular"); $("#" + idElemento).removeClass("pilotoIndicador_alert"); break; case 3: // Piloto rojo parpadeando. $("#" + idElemento).addClass("pilotoIndicador_alert"); $("#" + idElemento).removeClass("pilotoIndicador_good"); $("#" + idElemento).removeClass("pilotoIndicador_regular"); $("#" + idElemento).removeClass("pilotoIndicador_bad"); break; default: $("#" + idElemento).removeClass("pilotoIndicador_alert"); $("#" + idElemento).removeClass("pilotoIndicador_good"); $("#" + idElemento).removeClass("pilotoIndicador_regular"); $("#" + idElemento).removeClass("pilotoIndicador_bad"); } } /********************************** /* /* END /* /**********************************/ /** * Pide confirmación para mostrar el informe de estado */ function confirmShowInformeEstadoGestion(){ var response = confirm("¿ Desea generar informe de estado de la aplicacion ?"); if (response){ window.location.href = "https://app.enerlike.com/gestion/informe_estado"; } }