/* FUNCIONES DE UTILIDAD JS */ /* Imprime el contenido de la página actual */ function imprimir(evt){ window.print(); } /* Cierra la página actual */ function cerrarPagina(evt){ window.close(); } /* Convierte el valor de una variable de tipo String a un valor de tipo Float. * com: variable de tipo String*/ function parsearStringAFloat(com) { return parseFloat((String(com)).replace(/\./g, "").replace(",", ".")); } /* Convierte el valor de una variable de tipo Float a un valor de tipo String. * com: variable de tipo Float*/ function parsearFloatAString(com) { var comComoString = String(com); comComoString = comComoString.replace(".", ","); if (comComoString.indexOf(",") != - 1) { return comComoString.substring(comComoString.indexOf(",") + 3, - comComoString.length); } else { return comComoString + ",00"; } } /* Cancela un evento */ function cancelBubble(e) { var evt = e ? e:window.event; if (evt.stopPropagation) evt.stopPropagation(); if (evt.cancelBubble!=null) evt.cancelBubble = true; } /* Cancelar KeyPress Event*/ function cancelarKeyPress(e) { e.preventDefault(); } /* Permite el ingreso de teclas que representen letras. Si no, cancela el evento.*/ function soloLetrasInput(event) { //del 65 al 90 es de la 'A' a la 'Z' //del 97 al 122 es de la 'a' a la 'z' // 8 es BACKSPACE // 127 es DELETE // 32 es SPACE // 9 es TAB var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (esUnaLetra(charCode) || charCode == 8 || charCode == 127 ||charCode == 32 || charCode == 9){ } else{ event.getKeyCode() == null ? cancelarKeyPress(event) : event.cancel(); } } /* Permite el ingreso de teclas que representen letras + algunos símbolos. Si no, cancela el evento.*/ function letrasYSimbolosInput(event) { //del 65 al 90 es de la 'A' a la 'Z' //del 97 al 122 es de la 'a' a la 'z' // 8 es BACKSPACE // 127 es DELETE // 32 es SPACE // 9 es TAB // 209 Ñ y 241 ñ // 193 Á y 225 á // 201 É y 233 é // 205 Í y 237 í // 211 Ó y 243 ó // 218 Ú y 250 ú // 46 . (punto) // 44 , (coma) // 45 - (menos o guion medio) // 95 _ (guion bajo) var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (esUnaLetra(charCode) || charCode == 8 || charCode == 127 || charCode == 32 || charCode == 9 || charCode == 209 || charCode == 241 || charCode == 193 || charCode == 225 || charCode == 201 || charCode == 233 || charCode == 205 || charCode == 237 || charCode == 211 || charCode == 243 || charCode == 218 || charCode == 250 || charCode == 46 || charCode == 44 || charCode == 45 || charCode == 95){ } else{ event.getKeyCode() == null ? cancelarKeyPress(event) : event.cancel(); } } /* Retorna true cuando el código de la tecla presionada representa una Letra*/ function esUnaLetra(keycode) { //del 65 al 90 es de la 'A' a la 'Z' //del 97 al 122 es de la 'a' a la 'z' var retorno = false; if((keycode >= 65 && keycode <= 90) || ( keycode >= 97 && keycode <= 122) ){ retorno= true; } return retorno; } /* Retorna true cuando el código de la tecla presionada representa un Número*/ function esUnNumero(keycode) { //del 48 al 57 es del '0' al '9' var retorno = false; if (keycode >= 48 && keycode <= 57 ) { retorno= true; } return retorno; } /* Permite el ingreso de teclas que representen Numeros y barra (/). Si no, cancela el evento.*/ function soloFechas(event) { // del 48 al 57 es del '0' al '9' // 8 es BACKSPACE // 127 es DELETE // 32 es SPACE // 9 es TAB // 47 es barra (/) var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (esUnNumero(charCode) || charCode == 8 || charCode == 127 || charCode == 32 || charCode == 9 || charCode == 47){ } else{ event.getKeyCode() == null ? cancelarKeyPress(event) : event.cancel(); } } /* Permite el ingreso de teclas que representen Numeros y guion medio (-). Si no, cancela el evento.*/ function soloCUITs(event) { // del 48 al 57 es del '0' al '9' // 8 es BACKSPACE // 127 es DELETE // 32 es SPACE // 9 es TAB // 45 - (menos o guion medio) var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (esUnNumero(charCode) || charCode == 8 || charCode == 127 || charCode == 32 || charCode == 9 || charCode == 45){ } else{ event.getKeyCode() == null ? cancelarKeyPress(event) : event.cancel(); } } /* Permite el ingreso de teclas que representen Numeros. Si no, cancela el evento.*/ function soloNumerosInput(event) { //del 65 al 90 es de la 'A' a la 'Z' //del 97 al 122 es de la 'a' a la 'z' // 8 es BACKSPACE // 127 es DELETE // 32 es SPACE // 9 es TAB var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (esUnNumero(charCode) || charCode == 8 || charCode == 127 || charCode == 32 || charCode == 9){ } else{ event.getKeyCode() == null ? cancelarKeyPress(event) : event.cancel(); } } /* Permite el ingreso de teclas que representen Numeros + punto, coma y (-) signo negativo. Si no, cancela el evento.*/ function numerosConFormatoInput(event) { // 8 es BACKSPACE // 127 es DELETE // 32 es SPACE // 9 es TAB // 46 . (punto) // 44 , (coma) // 45 - (menos o guion medio) var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (esUnNumero(charCode) || charCode == 8 || charCode == 127 || charCode == 32 || charCode == 9 || charCode == 46 || charCode == 44 || charCode == 45){ } else{ event.getKeyCode() == null ? cancelarKeyPress(event) : event.cancel(); } } /* Determina si el valor de un componente está vacio (true) o no (false). */ function estaVacio(nombreComponente) { var componente = document.getElementById(nombreComponente); if(componente!=null&&componente.tagName!='SPAN'&&componente.disabled==false&&componente.readOnly!=true){ componente.value=componente.value.replace(/^\s*/, "").replace(/\s*$/, ""); if (componente.value == '' ||componente.value == null) { return true; } } return false; } /* Valida si el valor del campo recibido como parámetro (nombreComponente) cumple * con la expresión regular recibida como parámetro (re) y devuelve (true) si * cumple y (false) si no cumple */ function esRegExp(nombreComponente, re) { var componente = document.getElementById(nombreComponente); if(componente!=null&&componente.disabled==false&&componente.readOnly==false){ componente.value=componente.value.replace(/^\s*/, "").replace(/\s*$/, ""); if (componente.value != '') { if (re != null) { var patron = new RegExp('^'+re+'$','m'); if (!patron.test(componente.value)) { return false; } } } } return true; } /* Valida si la cadena recibida como parámetro (cadena) cumple * con la expresión regular recibida como parámetro (re) y devuelve (true) si * cumple y (false) si no cumple */ function validarRegExp(cadena, re) { cadena=cadena.replace(/^\s*/, "").replace(/\s*$/, ""); if (cadena != '') { if (re != null) { var patron = new RegExp('^'+re+'$','m'); if (!patron.test(cadena)) { return false; } } } return true; } /* Valida que el porcentaje ingresado en el componente sea MAYOR O IGUAL a 0 * y MENOR O IGUAL a 100 */ function validarPorcentaje(nombreComponente){ if (nombreComponente!=null){ if (!esRegExp('txt7','[0-9]{1,3}((\\,|\\.)[0-9]{1,2})?')) return false; var componente=document.getElementById(nombreComponente); if (componente!=null&&componente.disabled==false&&componente.readOnly==false){ var pct=componente.value.replace(',','.'); if (parseFloat(pct,10)<0||parseFloat(pct,10)>100){ return false; } } } return true; } /** Valida el formato y rango de fechas de un campo, considerando años bisiestos. @param nomComponente es el ID para javaScript del componente sobre el que queremos validar la fecha. @return false si la fecha no es válida en formato o rango. True si la fecha es válida. */ function esFechaValida(nomComponente){ //Si el campo está vacío. if(estaVacio(nomComponente)){ return true; } //Validación del formato de la fecha. if(!esRegExp(nomComponente,'[0-9]{1,2}/[0-9]{1,2}/([0-9]{2}|[0-9]{4})')){ return false; } var comp=document.getElementById(nomComponente); if(comp!=null&&comp.disabled==false&&comp.readOnly==false&&comp.value!=null&&comp.value!=undefined){ var f=comp.value.split('/'); var d=parseInt(f[0],10);//día var m=parseInt(f[1],10);//mes var a=parseInt(f[2],10);//año if (a < 100) { if (a < 50) a = a + 2000; else a = a + 1000; } //Máximo de días según el mes. var dmax=-1; //Si el mes es 2 (Febrero) if(m==2){ //Y es año bisiesto if(a%4==0&&(a%100!=0||a%400==0)){ dmax=29; }else{ dmax=28; } } //Meses con 31 días if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) { dmax=31; } //Meses con 30 días if(m==4||m==6||m==9||m==11){ dmax=30; } //Rando de los días,mes y años permitidos. if(d<0||d>dmax||m<1||m>12||a<1900){ return false; } } return true; } /* Evita que se ejecute el action 2 veces */ var cuenta = 0; function evitarDobleEnvio() { if (cuenta == 0) { cuenta++; return true; } else { alert('Los datos fueron enviados al servidor. Espere por favor.'); return false; } } /* Máscara de CUIT */ function patronCuitCod(event, idComponente){ var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (charCode != 13) { var com = document.getElementById(idComponente); if (com.value.length == 2) com.value = com.value + '-'; if (com.value.length == 11) com.value = com.value + '-'; } } /* Validación de CUIT*/ function validarCuit(cuit) { var vec = new Array(10); esCuit = false; cuit_rearmado = ""; errors = '' for (i = 0; i < cuit.length; i++) { caracter = cuit.charAt(i); if (caracter.charCodeAt(0) >= 48 && caracter.charCodeAt(0) <= 57) { cuit_rearmado += caracter; } } cuit = cuit_rearmado; if (cuit.length != 11) { esCuit = false; } else { x = i = dv = 0; vec[0] = cuit.charAt(0) * 5; vec[1] = cuit.charAt(1) * 4; vec[2] = cuit.charAt(2) * 3; vec[3] = cuit.charAt(3) * 2; vec[4] = cuit.charAt(4) * 7; vec[5] = cuit.charAt(5) * 6; vec[6] = cuit.charAt(6) * 5; vec[7] = cuit.charAt(7) * 4; vec[8] = cuit.charAt(8) * 3; vec[9] = cuit.charAt(9) * 2; for( i = 0; i <= 9; i++) { x += vec[i]; } dv = (11 - (x % 11)) % 11; if (dv == cuit.charAt(10)) { esCuit = true; } } return esCuit; } /* Máscara para un campo de fecha. Formato: dd/MM/yyyy*/ function patronFecha(event, idComponente) { var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (charCode != 13) { var fecha = document.getElementById(idComponente); if (!hayMasDeUnaBarra(fecha)) { if (fecha.value.length == 2) fecha.value = fecha.value + '/'; if (fecha.value.length == 5) fecha.value = fecha.value + '/'; } } } /* Función auxiliar de patronFecha necesaria para determinar si hay más de una barra*/ function hayMasDeUnaBarra(c) { var cadena = String(c.value); var u = -1; var p = cadena.indexOf('/',0); if ((p != -1) && (cadena.length > p+1)) u = cadena.indexOf('/',p+1); if ((p != -1) && (u != -1)) return true; else return false; } /* Posiciona el foco en el componente recibido como parámetro al presionar * ENTER*/ function siguiente(event, nomComponente) { var charCode = event.which != null ? event.which : event.keyCode != null ? event.keyCode : event.getKeyCode(); if (charCode != null) { if (charCode == 13) { var componente=document.getElementById(nomComponente); if (componente!=null&&componente.disabled==false&&componente.readOnly!=true){ componente.focus(); } } } } /* Ejecuta evento click sobre el componente recibido como parámetro*/ function hacerClick (nombreComponente) { if (navigator.appName.indexOf("Explorer") != -1) { // Internet Explorer document.getElementById(nombreComponente).click(); } else { // Mozilla Firefox document.getElementById(nombreComponente).onclick(); } } /* Valida si la fecha ingresada en el componente es mayor o igual a la fecha de hoy. Formato dd/MM/yyyy */ function esFechaPosteriorAHoy(nombreComponente){ var fecha = document.getElementById(nombreComponente).value; var f=fecha.split("/"); var hoy=new Date(); var fechaIngresada=f[2] + f[1] + f[0] ; var fechaHoy=hoy.getFullYear()*10000+(hoy.getMonth()+1)*100+hoy.getDate(); if(parseInt(fechaIngresada,10)>=parseInt(fechaHoy,10)){ return true; } return false; } /*Valida si la fecha ingresada en el primer componente es 'mayor' (o 'mayor o igual', según booleano incluirIgual) * a la fecha ingresada en el segundo componente. Formato dd/MM/yyyy.*/ function esFecha1PosteriorAFecha2(nombreComponenteFecha1, nombreComponenteFecha2, incluirIgual) { var fecha1 = document.getElementById(nombreComponenteFecha1).value; var fecha2 = document.getElementById(nombreComponenteFecha2).value; var f1 = fecha1.split("/"); var f2 = fecha2.split("/"); var fechaIngresada1 = f1[2] + f1[1] + f1[0]; var fechaIngresada2 = f2[2] + f2[1] + f2[0]; if(incluirIgual) { if(parseInt(fechaIngresada1,10) >= parseInt(fechaIngresada2,10)) { return true; } } else { if(parseInt(fechaIngresada1,10) > parseInt(fechaIngresada2,10)) { return true; } } return false; } /*Agrega Trim a la clase String de JS*/ String.prototype.trim = function () { var nombre = this.replace(/^\s+|\s+$/g, ""); if (nombre == '') return null; else return nombre; } /*Agrega la función replaceText a la clase String de JS. Idem replaceAll() * de java*/ String.prototype.replaceText = function (origen, destino) { var exp=new RegExp(origen, "g"); return this.replace(exp, destino); } /* Obtiene un parámetro del request */ function getRequestParameter(name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(window.location.href); if (results == null) return ""; else return results[1]; }