1 2// LIBRERÃA DE FUNCIONES 01.04.2021 ------------------------------------------------------------------------------------------------------------------------------------- 3 4// C O N S T A N T E S -------------------------------------------------------------------------------------------------------------------------------------------------- 5 6const URL = 1; 7 8 9// M A N I P U L A C I à N D E T E X T O S ------------------------------------------------------------------------------------------------------------------------- 10 11// ------------------------------------------------------------------------------------------------------------------ 12// Nombre: fncPonerCeros() 13// Resultado: Cadena 14// Comentarios: Rellena ceros a la izquierda hasta completar la longitud indicada 15// ------------------------------------------------------------------------------------------------------------------ 16function fncPonerCeros(intNumero, intLongitud) { 17 intNumero = intNumero.toString(); 18 while (intNumero.length < intLongitud) 19 intNumero = "0" + intNumero; 20 return intNumero; 21} 22 23 24// ------------------------------------------------------------------------------------------------------------------ 25// Nombre: fncTamArchivo() 26// Resultado: Cadena 27// Comentarios: Convierte bytes en unidades de 1 decimal 28// ------------------------------------------------------------------------------------------------------------------ 29function fncTamArchivo(intBytes) { 30 var sizes = ['intBytes', 'KB', 'MB', 'GB', 'TB']; 31 if (intBytes == 0) return 'n/a'; 32 var i = parseInt(Math.floor(Math.log(intBytes) / Math.log(1024))); 33 if (i == 0) return intBytes + ' ' + sizes[i]; 34 return (intBytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i]; 35}; 36 37 38// ------------------------------------------------------------------------------------------------------------------ 39// Nombre: fncEuros() 40// Argumentos: decNumero (Decimal) 41// Descripción: Devuelve el número formateado en euros 42// ------------------------------------------------------------------------------------------------------------------ 43function fncEuros(decNumero) { 44 strEuros = decNumero.toFixed(2) + " â¬"; 45 return strEuros; 46} 47 48 49// ------------------------------------------------------------------------------------------------------------------ 50// Nombre: fncFormateaLink() 51// Argumentos: objCaja 52// Descripción: Formatea la dirección web o email 53// ------------------------------------------------------------------------------------------------------------------ 54function fncFormateaLink(objCaja) { 55 objCaja.val($.trim(objCaja.val())); 56 if (objCaja.val() != "" && objCaja.val().toLowerCase().indexOf("mailto:") == -1) { 57 if (objCaja.val().match(/^.+\@.+\..+$/)) { 58 objCaja.val("mailto:" + objCaja.val().toLowerCase()); 59 } 60 else if (objCaja.val().substring(0,7) != "http://" && objCaja.val().substring(0,8) != "https://") { 61 objCaja.val("https://" + objCaja.val()); 62 } 63 } 64 else objCaja.val(objCaja.val().toLowerCase()); 65} 66 67 68// ------------------------------------------------------------------------------------------------------------------ 69// Nombre: fncTitulo() 70// Argumentos: strTexto (Cadena) 71// Descripción: Devuelve el texto formateado con la primera letra de cada palabra en mayúsculas, excepto artÃculos 72// ------------------------------------------------------------------------------------------------------------------ 73function fncTitulo(strTexto) { 74 var strReservadas = 'el la los las un una unos unas lo al del de en'; 75 $arrTexto = strTexto.split(" "); 76 var $arrAux = new Array(); 77 for (var i = 0; i < $arrTexto.length; ++i) {
78 if (strReservadas.indexOf($arrTexto[i]) === -1) { 79 $arrAux.push($arrTexto[i].charAt(0).toUpperCase() + $arrTexto[i].slice(1)); 80 } 81 else { 82 $arrAux.push($arrTexto[i].toLowerCase()); 83 } 84 } 85 return $arrAux.join(" "); 86} 87 88 89// ------------------------------------------------------------------------------------------------------------------ 90// Nombre: fncPrepararCadena() 91// Argumentos: intTipo (Entero) --> Tipo de preparacion para la cadena 92// strCadena (Cadena) --> Cadena con el texto a preparar 93// Descripción: Cadena con el texto formateado para el formato elegido 94// ------------------------------------------------------------------------------------------------------------------ 95function fncPrepararCadena(intTipo, strCadena) { 96 if (strCadena) { 97 switch (intTipo) { 98 case URL: 99 strCadena = strCadena.toLowerCase().trim().replace(/[ñ]/g,"n").replace(/[á]/g,"a").replace(/[é]/g,"e").replace(/[Ã]/g,"i").replace(/[ó]/g,"o").replace(/[ú]/g,"u").replace(/[ä]/g,"a").replace(/[ë]/g,"e").replace(/[ï]/g,"i").replace(/[ö]/g,"o").replace(/[ü]/g,"u").replace(/[â]/g,"a").replace(/[ê]/g,"e").replace(/[î]/g,"i").replace(/[ô]/g,"o").replace(/[û]/g,"u").replace(/[º]/g,"").replace(/[ª]/g,"").replace(/[\\]/g,"").replace(/[¡]/g,"").replace(/[!]/g,"").replace(/[|]/g,"").replace(/[·]/g,"").replace(/[~]/g,"").replace(/[¬]/g,"").replace(/[%]/g,"").replace(/[(]/g,"").replace(/[)]/g,"").replace(/[=]/g,"").replace(/[?]/g,"").replace(/[¿]/g,"").replace(/[â¬]/g,"e").replace(/[*]/g,"").replace(/[,]/g,"").replace(/[[]/g,"").replace(/[]]/g,"").replace(/[{]/g,"").replace(/[}]/g,"").replace(/[<]/g,"").replace(/[>]/g,"").replace(/[ - ]/g,"-").replace(/[ ]/g,"-").replace(/[_]/g,"-").replace(/[.]/g,"").replace(/[,]/g,"").replace(/[;]/g,"").replace(/[:]/g,"").replace(/[\"]/g,"").replace(/[â]/g,"").replace(/[â]/g,"").replace(/[`]/g,"").replace(/[´]/g,"").replace(/[â]/g,"").replace(/[â]/g,"").replace(/[']/g,"").replace(/[â ]/g,"").replace(/[#]/g,""); 100 break; 101 } 102 } 103 else strCadena = ""; 104 return strCadena; 105} 106 107 108// ------------------------------------------------------------------------------------------------------------------ 109// Nombre: fncRestringirCaracteres() 110// Argumentos: objEvento,strTipoPermitido 111// Descripción: Restringe el uso de ciertos caracteres 112// ------------------------------------------------------------------------------------------------------------------ 113function fncRestringirCaracteres(objEvento, strTipoPermitido) { 114 115 // Variables que definen los caracteres permitidos 116 var strEnteros = "0123456789"; 117 var strNumeros = "0123456789.-"; 118 var strDecimales = "0123456789."; 119 var strCaracteres = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÃOPQRSTUVWXYZ"; 120 var strAlfanumericos = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÃOPQRSTUVWXYZ0123456789"; 121 var strFiles = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; 122 var strTags = " áéÃóúabcdefghijklmnñopqrstuvwxyzÃÃÃÃÃABCDEFGHIJKLMNÃOPQRSTUVWXYZ0123456789,"; 123 var strFTP = "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 124 var strLogin = "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 125 var teclas_especiales = [9, 8, 37, 39]; 126 127 // Seleccionar los caracteres a partir del parámetro de la función 128 switch(strTipoPermitido) { 129 case 'ent': 130 strCaracteresPermitidos = strEnteros; 131 break; 132 case 'num': 133 strCaracteresPermitidos = strNumeros; 134 break; 135 case 'dec': 136 strCaracteresPermitidos = strDecimales; 137 break; 138 case 'car': 139 strCaracteresPermitidos = strCaracteres; 140 break; 141 case 'an': 142 strCaracteresPermitidos = strAlfanumericos; 143 break; 144 case 'files': 145 strCaracteresPermitidos = strFiles; 146 break; 147 case 'tags': 148 strCaracteresPermitidos = strTags; 149 break; 150 case 'ftp': 151 strCaracteresPermitidos = strFTP; 152 break; 153 case 'login': 154 strCaracteresPermitidos = strLogin; 155 break; 156 } 157 158 // Obtener la tecla pulsada 159 var evento = objEvento || window.event; 160 var codigoCaracter = evento.charCode || evento.keyCode; 161 var caracter = String.fromCharCode(codigoCaracter); 162 163 // Comprobar si la tecla pulsada es alguna de las teclas especiales 164 // (teclas de borrado y flechas horizontales) 165 var tecla_especial = false;
166 for (var i in teclas_especiales) { 167 if (codigoCaracter == teclas_especiales[i]) { 168 tecla_especial = true; 169 break; 170 } 171 } 172 173 // Comprobar si la tecla pulsada se encuentra en los caracteres permitidos 174 // o si es una tecla especial 175 return strCaracteresPermitidos.indexOf(caracter) != -1 || tecla_especial; 176} 177 178 179// F U N C I O N E S P A R A F E C H A S Y H O R A S ----------------------------------------------------------------------------------------------------------- 180 181// ------------------------------------------------------------------------------------------------------------------ 182// Nombre: fncConvertirFechaBD() 183// Descripción: Convierte la fecha de aaaa-mm-dd a aaaammdd 184// ------------------------------------------------------------------------------------------------------------------ 185function fncConvertirFechaBD(strFecha) { 186 return strFecha.replace(/\-/g,''); 187} 188 189 190// ------------------------------------------------------------------------------------------------------------------ 191// Nombre: fncConvertirFechaInput() 192// Descripción: Convierte la fecha de aaaammdd a aaaa-mm-dd 193// ------------------------------------------------------------------------------------------------------------------ 194function fncConvertirFechaInput(strFecha) { 195 return strFecha.substring(0,4) + "-" + strFecha.substring(4,6) + "-" + strFecha.substring(6,8); 196} 197 198 199// ------------------------------------------------------------------------------------------------------------------ 200// Nombre: fncConvertirHoraBD() 201// Descripción: Convierte la hora de hh:mm a hhmm 202// ------------------------------------------------------------------------------------------------------------------ 203function fncConvertirHoraBD(strHora) { 204 return strHora.substring(0,2) + strHora.substring(3,5); 205} 206 207 208// ------------------------------------------------------------------------------------------------------------------ 209// Nombre: fncConvertirFechaTime() 210// Descripción: Convierte la fecha dd/mm/aaaa a time 211// ------------------------------------------------------------------------------------------------------------------ 212function fncConvertirFechaTime(strFecha) { 213 var fecha = new Date(strFecha.substring(6,10),(strFecha.substring(3,5)-1),strFecha.substring(0,2)); 214 return (fecha.getTime()/1000); 215} 216 217 218// ------------------------------------------------------------------------------------------------------------------ 219// Nombre: fncComprobarRangoFechas() 220// Argumentos: strFecha1 (Cadena) --> Fecha inicial en formato Web 221// strFecha2 (Cadena) --> Fecha final en formato Web 222// Resultado: Boolean 223// Descripción: Comprueba que 'strFecha1' sea menor que 'strFecha2' 224// ------------------------------------------------------------------------------------------------------------------ 225function fncComprobarRangoFechas(strFecha1, strFecha2) { 226 var strAux1 = ""; 227 var strAux2 = ""; 228 strAux1 = fncConvertirFechaBD(strFecha1); 229 strAux2 = fncConvertirFechaBD(strFecha2); 230 return (parseInt(strAux2) - parseInt(strAux1) < 0)? false: true; 231} 232 233 234// ------------------------------------------------------------------------------------------------------------------ 235// Nombre: fncComprobarRangoHoras() 236// Argumentos: strHora1 (Cadena) --> Hora inicial en formato Web 237// strHora2 (Cadena) --> Hora final en formato Web 238// Resultado: Boolean 239// Descripción: Comprueba que 'strHora1' sea menor que 'strHora2' 240// ------------------------------------------------------------------------------------------------------------------ 241function fncComprobarRangoHoras(strHora1, strHora2) { 242 var strAux1 = ""; 243 var strAux2 = ""; 244 strAux1 = fncConvertirHoraBD(strHora1); 245 strAux2 = fncConvertirHoraBD(strHora2); 246 return (parseInt(strAux2) - parseInt(strAux1) < 0)? false: true; 247} 248 249 250// V A L I D A C I à N D E D A T O S ------------------------------------------------------------------------------------------------------------------------------- 251 252// ------------------------------------------------------------------------------------------------------------------ 253// Nombre: fncValidarEmail() 254// ------------------------------------------------------------------------------------------------------------------ 255function fncValidarEmail(strEmail) { 256 return strEmail.match(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/); 257} 258 259 260// ------------------------------------------------------------------------------------------------------------------ 261// Nombre: fncValidarURL() 262// ------------------------------------------------------------------------------------------------------------------ 263function fncValidarURL(s) { 264 if (!fncValidarURL.rx_url) { 265 fncValidarURL.rx_url=/^(?:(?:https?|ftp):\/\/)?(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/i; 266 fncValidarURL.prefixes=['http:\/\/', 'https:\/\/', 'ftp:\/\/', 'www.']; 267 // taken from https://w3techs.com/technologies/overview/top_level_domain/all 268 fncValidarURL.domains=['com','ru','net','org','de','jp','uk','br','pl','in','it','fr','au','info','nl','ir','cn','es','cz','kr','ua','ca','eu','biz','za','gr','co','ro','se','tw','mx','vn','tr','ch','hu','at','be','dk','tv','me','ar','no','us','sk','xyz','fi','id','cl','by','nz','il','ie','pt','kz','io','my','lt','hk','cc','sg','edu','pk','su','bg','th','top','lv','hr','pe','club','rs','ae','az','si','ph','pro','ng','tk','ee','asia','mobi']; 269 } 270 if (!fncValidarURL.rx_url.test(s)) return false;
271 for (i=0; i<fncValidarURL.prefixes.length; i++) if (s.startsWith(fncValidarURL.prefixes[i])) return true; 272 for (i=0; i<fncValidarURL.domains.length; i++) if (s.endsWith('.'+fncValidarURL.domains[i]) || s.includes('.'+fncValidarURL.domains[i]+'\/') ||s.includes('.'+fncValidarURL.domains[i]+'?')) return true; 273 return false; 274} 275 276 277// ------------------------------------------------------------------------------------------------------------------ 278// Nombre: fncValidarTelefono() 279// ------------------------------------------------------------------------------------------------------------------ 280function fncValidarTelefono(strTelefono) { 281 return strTelefono.match(/^[6789][0-9]{8}$/); 282} 283 284 285// ------------------------------------------------------------------------------------------------------------------ 286// Nombre: fncValidarCP() 287// ------------------------------------------------------------------------------------------------------------------ 288function fncValidarCP(strCP) { 289 return strCP.match(/^[0-9]{5}$/); 290} 291 292 293// ------------------------------------------------------------------------------------------------------------------ 294// Nombre: fncValidarDNI() 295// Resultado: 1 -> OK 296// -1 -> Formato incorrecto 297// -2 -> La letra es incorrecta 298// ------------------------------------------------------------------------------------------------------------------ 299function fncValidarDNI (strCadenaDNI) { 300 var strLetras = 'TRWAGMYFPDXBNJZSQVHLCKE'; 301 302 strCadenaDNI = strCadenaDNI.toUpperCase(); 303 if (!strCadenaDNI.match(/^[0-9]{8}[A-Z]{1}$/)) 304 return -1; 305 else { 306 chrLetra = strCadenaDNI.substr(8, 1); 307 strNumeros = strCadenaDNI.substr(0, 8); 308 309 if (strLetras.charAt(parseInt(strNumeros,10)%23) != chrLetra) 310 return -2; 311 else 312 return 1; 313 } 314} 315 316 317// ------------------------------------------------------------------------------------------------------------------ 318// Nombre: fncValidarNIE() 319// Resultado: 1 -> OK 320// -1 -> Formato incorrecto 321// -2 -> La letra es incorrecta 322// ------------------------------------------------------------------------------------------------------------------ 323function fncValidarNIE (strCadenaNIE) { 324 var strLetras = 'TRWAGMYFPDXBNJZSQVHLCKE'; 325 326 strCadenaNIE = strCadenaNIE.toUpperCase(); 327 if (!strCadenaNIE.match(/^[X-Z]{1}[0-9]{7}[A-Z]{1}$/)) 328 return -1; 329 else { 330 chrLetra = strCadenaNIE.substr(8, 1); 331 strNumeros = strCadenaNIE.substr(0, 8); 332 333 strNumeros = strNumeros.replace('X','0'); 334 strNumeros = strNumeros.replace('Y','1'); 335 strNumeros = strNumeros.replace('Z','2'); 336 if (strLetras.charAt(parseInt(strNumeros,10)%23) != chrLetra) 337 return -2; 338 else 339 return 1; 340 } 341} 342 343 344// ------------------------------------------------------------------------------------------------------------------ 345// Nombre: fncValidarCIF() 346// Resultado: 1 -> OK 347// -1 -> Formato incorrecto 348// -2 -> La letra es incorrecta 349// -3 -> El digito de control es incorrecto 350// ------------------------------------------------------------------------------------------------------------------ 351function fncValidarCIF (strCadenaCIF) { 352var intControl = 0; 353var arrComprobacion = new Array(0,2,4,6,8,1,3,5,7,9); 354var arrLetras = new Array("J","A","B","C","D","E","F","G","H","I"); 355 356 strCadenaCIF = strCadenaCIF.toUpperCase(); 357 if (!strCadenaCIF.match(/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/)) 358 return -1; 359 else { 360 if (!strCadenaCIF.match(/^[ABCDEFGHKLMNPQS]{1}/)) 361 return -2; 362 else { 363 strLetraCIF = strCadenaCIF.substring(0,1); 364 strNumerosCIF = strCadenaCIF.substring(1,8); 365 strControlCIF = strCadenaCIF.substring(8,9); 366 367 for(i=2; i<=6; i+=2) { 368 intControl += arrComprobacion[parseInt(strCadenaCIF.substr(i-1,1))]; 369 intControl += parseInt(strCadenaCIF.substr(i,1)); 370 } 371 intControl += arrComprobacion[parseInt(strCadenaCIF.substr(i-1,1))]; 372 intControl = (10-(intControl%10)); 373 if(intControl == 10) { 374 intControl = 0; 375 } 376 377 if ((strControlCIF != intControl) && (strControlCIF != arrLetras[intControl])) { 378 return -3; 379 } 380 } 381 } 382 383 return 1; 384} 385 386 387// ------------------------------------------------------------------------------------------------------------------ 388// Nombre: fncValidarIBAN() 389// ------------------------------------------------------------------------------------------------------------------ 390function fncValidarIBAN(IBAN) { 391 392 IBAN = IBAN.toUpperCase(); 393 IBAN = IBAN.trim(); 394 IBAN = IBAN.replace(/\s/g, ""); 395 396 var letra1,letra2,num1,num2; 397 var isbanaux; 398 var numeroSustitucion; 399 //La longitud debe ser siempre de 24 caracteres 400 if (IBAN.length != 24) return false;
401 402 // Se coge las primeras dos letras y se pasan a números 403 letra1 = IBAN.substring(0, 1); 404 letra2 = IBAN.substring(1, 2); 405 num1 = getnumIBAN(letra1); 406 num2 = getnumIBAN(letra2); 407 //Se sustituye las letras por números. 408 isbanaux = String(num1) + String(num2) + IBAN.substring(2); 409 // Se mueve los 6 primeros caracteres al final de la cadena. 410 isbanaux = isbanaux.substring(6) + isbanaux.substring(0,6); 411 412 //Se calcula el resto, llamando a la función modulo97, definida más abajo 413 resto = modulo97(isbanaux); 414 if (resto == 1) return true; 415 else return false; 416} 417 418function modulo97(iban) { 419 var parts = Math.ceil(iban.length/7); 420 var remainer = ""; 421 for (var i = 1; i <= parts; i++) { 422 remainer = String(parseFloat(remainer+iban.substr((i-1)*7, 7))%97); 423 } 424 return remainer; 425} 426 427function getnumIBAN(letra) { 428 ls_letras = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; 429 return ls_letras.search(letra) + 10; 430} 431 432 433// F U N C I O N E S V A R I A S -------------------------------------------------------------------------------------------------------------------------------------- 434 435function fncOrdenarSelect(objSelector) { 436 var tmpAry = new Array(); 437 for (var i=0;i<objSelector.options.length;i++) { 438 tmpAry[i] = new Array(); 439 tmpAry[i][0] = objSelector.options[i].text; 440 tmpAry[i][1] = objSelector.options[i].value; 441 } 442 tmpAry.sort(); 443 while (objSelector.options.length > 0) { 444 objSelector.options[0] = null; 445 } 446 for (var i=0;i<tmpAry.length;i++) { 447 var op = new Option(tmpAry[i][0], tmpAry[i][1]); 448 objSelector.options[i] = op; 449 } 450 return; 451} 452 453 454// C O O K I E S ------------------------------------------------------------------------------------------------------------------------------------------------------- 455 456function fncSetCookie(strNombre, strValor, intSeg) { 457 $.get("setCookie.php", { n: strNombre, v: strValor, s: intSeg } ); 458} 459 460function fncGetCookie(strNombre) { 461 let resultado; 462 $.ajax({ 463 async: false, 464 type: 'get', 465 url: 'getCookie.php', 466 data: { n: strNombre }, 467 success: function (data) { 468 resultado = data; 469 } 470 }); 471 return resultado; 472} 473 474/* 475var nameEQ = strNombre + "="; 476var ca = document.cookie.split(';'); 477for(var i=0;i < ca.length;i++) { 478 var c = ca[i]; 479 while (c.charAt(0)==' ') c = c.substring(1,c.length); 480 if (c.indexOf(nameEQ) == 0) return atob(decodeURIComponent(c.substring(nameEQ.length,c.length))); 481} 482return null; 483*/ 484
485function fncDelCookie(strNombre) { 486 $.get("setCookie.php", { n: strNombre, v: '', s: -100 } ); 487}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.