/** * Comproba si un obxecto é un combo ou non. * @param {Object} obj Obxecto a comprobar */ function esCombo(obj) { if (!obj) return false; if (!obj.options) return false; }; /** * Engade un manexador de evento a un obxecto dado. * http://ejohn.org/projects/flexible-javascript-events * http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html * @param {Object} elementObject * @param {Object} eventName * @param {Object} functionObject */ function addEvent( obj, type, fn ) { removeEvent( obj, type, fn ); if(obj.addEventListener){ obj.addEventListener( type, fn, false ); } else { obj['e'+type+fn] = fn; obj[type+fn] = function(){obj['e'+type+fn]( window.event );} obj.attachEvent( 'on'+type, obj[type+fn] ); } } function removeEvent( obj, type, fn ) { try { if(obj.removeEventListener){ obj.removeEventListener( type, fn, false ); }else{ obj.detachEvent( 'on'+type, obj[type+fn] ); obj[type+fn] = null; obj['e'+type+fn] = null; } } catch (ex) {} } /** * Array.prototype.deleteItem * Prototipo para los arrays que nos permite eliminar de un array cualquiera * un elemento a través de su índice * @param indiceArray entero que nos indicará el elemento a eliminar del array **/ Array.prototype.deleteItem = function(indiceArray) { if(!isNaN(indiceArray)) { var arrayAux = new Array(); for(var i= 0; i < this.length; i++) { if(i != indiceArray) arrayAux.push(this[i]); } this.length = 0; for(var j= 0; j < arrayAux.length; j++) { this.push(arrayAux[j]); } } } /* ====================================================================== Función PasaAmayusculas ========================================================================== */ function PasaAMayusculas(e) { var tecla = (document.all) ? e.keyCode : e.which; if ((tecla == 0) || (tecla == 8) || (tecla == 9) || (tecla == 13)) return true; // Gecko if( !window.event ){ var pst = e.currentTarget.selectionStart; var string_start = e.currentTarget.value.substring(0,pst); var string_end = e.currentTarget.value.substring(pst ,e.currentTarget.value.length); e.currentTarget.value = string_start+ String.fromCharCode(tecla).toUpperCase()+ string_end; e.currentTarget.selectionStart = pst + 1; e.currentTarget.selectionEnd = pst + 1; e.stopPropagation(); return false; } // Trident else if (window.event){ return e.keyCode = String.fromCharCode( e.keyCode ).toUpperCase().charCodeAt(0); } } /* ============================================================================================ FUNCIONES HABILITAN LOS MENUS Y PESTAÑAS =============================================================================================== */ function HabilitaMenuPrincipal(NuevoEstado) { top.principal.menu.HABILITADO_MENUP = NuevoEstado; } function HabilitaMenuFuncional(NuevoEstado) { top.principal.menu.HABILITADO_MENUF = NuevoEstado; } function HabilitaPestanas(NuevoEstado) { var destinosLinks = top.principal.mainFrame.destinosLinks; if (destinosLinks) { var i = 0; for (i=0;i< destinosLinks.length;i++) { var obj = eval('getObjetoPorId("link_'+i+'")'); if (obj) HazEditableLinkPestana(obj,destinosLinks[i],NuevoEstado); } } } /* ====================================================================== FUNCTION: unescapeArray INPUT: miArray: Array en el que hacer unescape a las cadenas DESC: hace un unescape a todo String en miArray (o array de arrays) CUIDADIN: ¡¡Es recursiva!! Tiene recursividad terminal así que es trivial pasarlo a iterativo.Se usa la recta y listo. ====================================================================== */ function unescapeArray(miArray) { var valor; if ( (miArray) && (miArray.length) ) { for (var i=0;i-1) &&((pos_punto + numMaxDecimales) == (cadena.length - 1))) return false; var tecla = evento.keyCode; if (tecla == null) return true; var caracter_pulsado = String.fromCharCode(tecla); if (((caracter_pulsado == '.') && ((cadena.indexOf('.')>-1)||(cadena.indexOf(',')>-1))) || ((caracter_pulsado == ',') && ((cadena.indexOf('.')>-1)||(cadena.indexOf(',')>-1))) ) return false; else return SoloNumerosComaPunto(evento); } /* ====================================================================== FUNCTION: getElementoPorNombre INPUT: arrayOrigen: array del que sacar el campo arrayRelacion: array de ['NOMBRECAMPO',posicion] Sera un array global para cada tipo de array nombreCampo: String con el nombre del campo a recuperar DESC: Devuelve el campo nombreCampo en arrayOrigen mapeado según arrayRelacion ====================================================================== */ function getElementoPorNombre(arrayOrigen,arrayRelacion,nombreCampo,escapeado) { var salida=''; var encontrado=false; if ( (nombreCampo) && (nombreCampo.length>0) ){ // carlosds: Comproba que exista algo en arrayOrigen, para evitar o temido "undefined" if (arrayOrigen) { if (arrayOrigen.length != 0) { // emp 26/08/08 Modificación para que acepte como arrayRelacion tanto obxectos como arrays // Pasando un obxecto utilizado como un array asociativo eliminamos a necesidade de recorrer todo o array // buscando o campo solicitado if(typeof(arrayRelacion[nombreCampo]) != "undefined"){ salida= arrayOrigen[arrayRelacion[nombreCampo]]; }else{ for (var i=0;( (i< arrayRelacion.length) && (!encontrado) );i++) { encontrado=(nombreCampo==arrayRelacion[i][0]); if (encontrado) salida=arrayOrigen[(arrayRelacion[i][1])]; } } } } } return escapeado?unescape(salida):salida; } /* ====================================================================== Funcion: xerarGetters Engade os getters a un obxecto cos nomes e valores suministrados ========================================================================== */ function xerarGetters(obxecto, nomes, valores){ function xerarGetter(obx, nome, val){ obx[nome]= function(){return unescape(val);}; } for(var i = 0; i < nomes.length; i++) xerarGetter(obxecto, nomes[i], valores[i]); } /* ====================================================================== Funcion: llamadaVacia No hace nada. Usada como comodín ========================================================================== */ function llamadaVacia() { } /* ====================================================================== vyctorlm 3/12/2009 Engado o parametro form para utilizalo na funcion getObjetoPorId. FUNCTION: HazVisible INPUT: nombre: nombre del elemento (td,boton,etc.) que se quiere visualizar u ocultar estado: booleano true->elemento visible. false->elemento no visible form: formulario onde esta definido o elemento (incluindo un punto final) DESC: Cambia el atributo de visibilidad de un elemento, por ejemplo un td. ====================================================================== */ function HazVisible(nombre,estado, form) { var obj = getObjetoPorId(nombre, form); if (obj) { obj.style.visibility = (estado && true) ? 'visible' : 'hidden'; } } /* ====================================================================== FUNCTION: eVisible INPUT: nombre: nombre del elemento (td,boton,etc.) que se quiere consultar visualizar form: formulario onde esta definido o elemento (incluindo un punto final) DESC: Cambia el atributo de visibilidad de un elemento, por ejemplo un td. ====================================================================== */ function eVisible(nombre, form) { var obj = getObjetoPorId(nombre, form); if (obj && obj.style.visibility == 'visible') { return true; } return false; } /* ====================================================================== FUNCTION: HazEditable INPUT: nombre: nombre del elemento (td,boton,etc.) que se quiere poner editable o no estado: booleano true->elemento editable. false->elemento no editable DESC: Pone a editable o no un elemento, incluido td, tablas, ... ====================================================================== */ function HazEditable(contenedor,estado) { // Para as táboas (tabla.js) if ((contenedor.type)&&(contenedor.type == 'tabla')) { contenedor.setEnabled(estado); return; } // Si contenedor non é xa un obxecto (pode ser un string, p.ex.), resolve a referencia if (typeof contenedor != 'object') { contenedor = getObjetoPorId(contenedor); } // Esta é unha forma un pouco caseira de comprobar si contenedor é un obxecto do DOM... // Si é así, establece a súa propiedade disabled. if (contenedor.type) { contenedor.disabled = !(estado); // Os navegadores baseados en gecko non cambian a cor do texto cando se deshabilita un // elemento da clase obligatorio (clase definida por nos en estilos/estilos_net.js). // A solucion pasa por definir unha clase de estilo nova (obligatorioDisabled) e ir // cambiando segundo se habiliten/deshabiliten os elementos. if ((!document.all) && ((contenedor.className).indexOf("obligatorio") != -1)) { if (!estado) { contenedor.className="obligatorioDisabled"; } else { contenedor.className = "obligatorio"; } } // Ata aqui. } else { var inputs = contenedor.all.tags("INPUT") ; var sel= contenedor.all.tags("SELECT"); var area = contenedor.all.tags("TEXTAREA"); var e1; for (i=0;i< inputs.length;i++) { el=inputs[i]; el.disabled=!estado; } for (i=0;i< sel.length;i++) { el=sel[i]; el.disabled=!estado; } for (i=0;i< area.length;i++) { el=area[i]; el.disabled=!estado; } } } function HazEditableLinkPestana(objeto,destino,NuevoEstado) { if (NuevoEstado) { var index = destino.indexOf("cod_pestana="); var cadena = destino.substring(index+12,index+12+12); cadena = cadena.substring(0,3); if ((cadena == '100')||(cadena == '200')||(cadena == '300')) objeto.href= 'javascript:CambiarLinkMostrarBarraProcesando("'+destino+'");'; else // objeto.href=destino; objeto.href= 'javascript:CambiarLinkMostrarBarraProcesando("'+destino+'");'; } else objeto.href= "#"; } function CambiarLinkMostrarBarraProcesando(param) { top.MostrarBarraProcesando(null); top.principal.mainFrame.location=param; } function HazEditableLink(objeto,destino,NuevoEstado) { if (NuevoEstado) objeto.href=destino; else objeto.href="#"; } /* ====================================================================== FUNCTION: getValorRadio INPUT: nombreForm: nombre del form donde está el radio button. nombreRadio: el nombre de los radioButton DESC: Obtiene el value del radioButton seleccionado en el grupo de radioButtons cuyo nombre (el de todos) es 'nombreRadio' y está dentro del formulario 'nombreForm'. ====================================================================== */ function getValorRadio(nombreForm,nombreRadio) { var salida=-1; var miForm=getObjetoPorId(nombreForm); var arrayRadio=eval('miForm.'+nombreRadio); for (i=0;( (i< arrayRadio.length) && (salida==-1) );i++) if (arrayRadio[i].checked) salida=arrayRadio[i].value; return salida; } /* ====================================================================== FUNCTION: setValorRadio INPUT: nombreForm: nombre del form donde está el radio button. nombreRadio: el nombre de los radioButton DESC: Obtiene el value del radioButton seleccionado en el grupo de radioButtons cuyo nombre (el de todos) es 'nombreRadio' y está dentro del formulario 'nombreForm'. ====================================================================== */ function setValorRadio(nombreForm,nombreRadio,valor) { var salida=-1; var miForm=getObjetoPorId(nombreForm); var arrayRadio=eval('miForm.'+nombreRadio); for (i=0;( (i< arrayRadio.length) && (salida==-1) );i++) if (arrayRadio[i].value==valor) {arrayRadio[i].checked=true; salida=1;} } /* ====================================================================== FUNCTION: HabilitaRadio INPUT: nombreForm: nombre del form donde está el radio button. nombreRadio: el nombre de los radioButton DESC: Obtiene el value del radioButton seleccionado en el grupo de radioButtons cuyo nombre (el de todos) es 'nombreRadio' y está dentro del formulario 'nombreForm'. ====================================================================== */ function HabilitaRadio(nombreForm,nombreRadio,novoValor) { var salida=-1; var miForm=getObjetoPorId(nombreForm); var arrayRadio=eval('miForm.'+nombreRadio); for (i=0; i< arrayRadio.length ;i++) arrayRadio[i].disabled = !novoValor; } /* ====================================================================== FUNCTION: crearOptions INPUT: El array de datos, array con la posicion columnas de los values, posicion del text, el paramTextNoSelec para la no seleccion DESC: Crea un array de options a partir de un array. Y Añade el no select si se le pasa. ====================================================================== */ function crearOptions(arrayDatos, arrayPosValues, PosText, paramTextNoSelec,escapeado) { var i =0; var j = 0; var varValue =''; var arrayOptions = new Array(); var opcion = new Option(); if (paramTextNoSelec) { if (paramTextNoSelec!=null) { opcion.text = paramTextNoSelec ; opcion.value = ''; arrayOptions[0] = opcion; } } if (arrayDatos) { for (i=0;i< arrayDatos.length;i++) { opcion = new Option(); opcion.text = escapeado?unescape(arrayDatos[i][PosText]):arrayDatos[i][PosText]; for (j=0;j< arrayPosValues.length;j++) { if (j==0) { varValue += escapeado?unescape(arrayDatos[i][arrayPosValues[j]]):arrayDatos[i][arrayPosValues[j]]; } else { varValue += '_'+ (escapeado?unescape(arrayDatos[i][arrayPosValues[j]]):arrayDatos[i][arrayPosValues[j]]); } } opcion.value = varValue; varValue = ''; if (paramTextNoSelec) arrayOptions[i+1] = opcion; else arrayOptions[i] = opcion; } } return arrayOptions; } /* ====================================================================== FUNCTION: crearOptions INPUT: El parametro no seleccion DESC: Crea un array de options a partir del no select ====================================================================== */ function crearOptionsVacio(paramTextNoSelec) { var arrayOptions = new Array(); var opcion = new Option(); if (paramTextNoSelec) { opcion.text = paramTextNoSelec ; opcion.value = ''; } arrayOptions[0] = opcion; return arrayOptions; } /* ====================================================================== FUNCTION: cambiarOptions INPUT: El select al que le vamos a cambiar el options, un array de options y el paramTextNoSelec para la no seleccion DESC: Esta funcion modifica los options de un select, asignando los del array parametro. Y Añade el no select si se le pasa. ====================================================================== */ function cambiarOptions(contenedor,options) { // Antes de nada, comprobamos si é un obxecto de tipo select // TODO Nunha situación ideal, lanzaríamos unha excepcion de tipo InvalidDomElement, ou similar. if (!contenedor.options) return var longitud = 0; if ((options)&&(options.length)) longitud = options.length; var maximo = contenedor.options.length > (longitud) ? contenedor.options.length : (longitud); var _ie = contenedor.options.remove; for(i=0; i < maximo; i++) { if(i < (longitud)) { contenedor.options[i] = options[i]; } else { //Borro el ultimo if (_ie) { contenedor.options.remove(contenedor.options.length - 1); } else { contenedor.options[contenedor.options.length - 1] = null; } } } contenedor.options.selectedIndex = 0; } /* ============================================================================================ DESC: Posiciona un combo si tiene un unico valor =============================================================================================== */ function PosicionarComboUnicoValor(combo) { if ((combo.options)&&(combo.options.length==2)) combo.selectedIndex = 1; } /* ============================================================================================ DESC: Posiciona un combo por el texto =============================================================================================== */ function PosicionarComboPorTexto(combo,elemento) { var nonAtopado = true; for (i=0;i < combo.options.length;i++){ if(combo.options[i].text == elemento) { nonAtopado = false; combo.selectedIndex = i; i = combo.options.length; //Pa q salga } } if (nonAtopado) combo.selectedIndex = 0; } /* ============================================================================================ DESC: Posiciona un combo por el value =============================================================================================== */ function PosicionarComboPorValue(combo,elemento) { var nonAtopado = true; elemento = elemento + ''; combo.selectedIndex = 0; if( combo.options === undefined ){ combo.selectedIndex = 0; }else{ for (i=0;i < combo.options.length;i++){ if(combo.options[i].value == elemento) { nonAtopado = false; combo.selectedIndex = i; i = combo.options.length; //Pa q salga } } if (nonAtopado) combo.selectedIndex = 0; } } /* ============================================================================================ DESC: Posiciona un combo por el algun value. Recibe array con la pos del codigo y array 2 con values =============================================================================================== */ function PosicionarComboPorAlgunValue(combo,arrayPos,arrayValues,paramSeparador) { var valores = new Array(); var ind = 0; var coincide = true; var i=0; var nonAtopado = true; var separador='_'; if (paramSeparador && (paramSeparador!='')) separador = paramSeparador; if ((arrayPos)&&(arrayPos.length>0)) { while ((i < combo.options.length)&&(nonAtopado)) { valores = (combo.options[i].value).split(separador); ind = 0; coincide = 0; while ((ind < arrayPos.length)) { if (valores[(arrayPos[ind])]== arrayValues[ind]) coincide ++; ind++; } if (coincide==arrayPos.length) { nonAtopado = false; combo.selectedIndex = i; } i++; } } if (nonAtopado) combo.selectedIndex = 0; } /* ============================================================================================ DESC: Cubre el combo (text,value) con el array de array =============================================================================================== */ function CubreComboTexto(combo,arrayDatos,paramTextNoSelec,escapeado) { var textoNoSelec = 'SEN SELECCION'; if ((paramTextNoSelec)&&(paramTextNoSelec!=null)&&(paramTextNoSelec!='')) textoNoSelec = paramTextNoSelec; var opcion = new Option(); opcion.value = textoNoSelec; opcion.text = textoNoSelec; combo.options[combo.options.length]= opcion; for (i=0;i < arrayDatos.length;i++) { opcion = new Option(); opcion.value = escapeado?unescape(arrayDatos[i][0]):arrayDatos[i][0]; opcion.text = escapeado?unescape(arrayDatos[i][0]):arrayDatos[i][0]; combo.options[combo.options.length]= opcion; } } /* ============================================================================================ DESC: Borra todos los options de un combo =============================================================================================== */ function LimpiaCombo(contenedor) { if (contenedor) { if (contenedor.options) { var _ie = contenedor.options.remove; var numOpciones = contenedor.options.length-1; for (i = numOpciones; i >= 0; i--) { if (_ie) { contenedor.options.remove(contenedor.options[i]); } else { contenedor.options[i] = null; } } } } } /* ============================================================================================ DESC: Borra todos los options de un combo =============================================================================================== */ function DeselecionaCombo(contenedor) { if (contenedor) { if (contenedor.options) { var numOpciones = contenedor.options.length-1; for (i= numOpciones; i>=0 ; i--) { contenedor.options.selected=false; } } } } /* ============================================================================================ DESC: Cubre el combo (text,value) con el array de arrays =============================================================================================== */ function CubreComboValueTexto(combo,arrayDatos,paramTextNoSelec,escapeado,nousarValorDefecto) { if (!combo) return; var textoNoSelec = 'SEN SELECCION'; if ((paramTextNoSelec)&& (paramTextNoSelec!=null)&&(paramTextNoSelec!='')) textoNoSelec = paramTextNoSelec; var opcion = new Option(); if (!nousarValorDefecto) { opcion.value = ''; opcion.text = textoNoSelec; combo.options[combo.options.length]= opcion; } for (i=0;i < arrayDatos.length;i++) { opcion = new Option(); opcion.value = escapeado?unescape(arrayDatos[i][0]):(arrayDatos[i][0]); opcion.text = escapeado?unescape(arrayDatos[i][1]):(arrayDatos[i][1]); combo.options[combo.options.length]= opcion; } } /* ============================================================================================ DESC: Cubre el combo (text,value) con el array de arrays =============================================================================================== */ function CubreComboValueTexto(combo,arrayDatos,paramTextNoSelec,escapeado,nousarValorDefecto,posicionValue,posicionTexto) { if (!combo) return; var textoNoSelec = 'SEN SELECCION'; if ((paramTextNoSelec)&& (paramTextNoSelec!=null)&&(paramTextNoSelec!='')) textoNoSelec = paramTextNoSelec; var opcion = new Option(); if (!nousarValorDefecto) { opcion.value = ''; opcion.text = textoNoSelec; combo.options[combo.options.length]= opcion; } for (i=0;i < arrayDatos.length;i++) { opcion = new Option(); opcion.value = escapeado?unescape(arrayDatos[i][posicionValue]):(arrayDatos[i][posicionValue]); opcion.text = escapeado?unescape(arrayDatos[i][posicionTexto]):(arrayDatos[i][posicionTexto]); combo.options[combo.options.length]= opcion; } } /* ============================================================================================ DESC: Cubre el combo (text,value) con el array de arrays =============================================================================================== */ function CubreComboMultiValueTexto(combo,arrayDatos, arrayPosValues, arrayPosText, paramTextNoSelec,escapeado,nousarValorDefecto,separador) { if (!combo) return; if (!combo.options) return; if (!arrayDatos) return; var j = 0; var i = 0; var varValue = ''; var varText = ''; var textoNoSelec = 'SEN SELECCION'; var caracterSeparador = '_'; if ((separador!=null)&&(separador!='')) caracterSeparador = separador; if ((paramTextNoSelec)&& (paramTextNoSelec!=null)&&(paramTextNoSelec!='')) textoNoSelec = paramTextNoSelec; var opcion = new Option(); if (!nousarValorDefecto) { opcion.value = ''; opcion.text = textoNoSelec; combo.options[combo.options.length]= opcion; } for (i=0;i < arrayDatos.length;i++) { opcion = new Option(); varValue = ''; for (j=0;j< arrayPosValues.length;j++) { if (j==0) { varValue += escapeado?unescape(arrayDatos[i][arrayPosValues[j]]):arrayDatos[i][arrayPosValues[j]]; } else { varValue += caracterSeparador + (escapeado?unescape(arrayDatos[i][arrayPosValues[j]]):arrayDatos[i][arrayPosValues[j]]); } } opcion.value = varValue; varText = ''; j = 0; for (j=0;j< arrayPosText.length;j++) { if (j==0) { varText += escapeado?unescape(arrayDatos[i][arrayPosText[j]]):arrayDatos[i][arrayPosText[j]]; } else { varText += caracterSeparador+ (escapeado?unescape(arrayDatos[i][arrayPosText[j]]):arrayDatos[i][arrayPosText[j]]); } } opcion.text = varText; combo.options[combo.options.length]= opcion; } } /* ============================================================================================ DESC: Cambia el class del boton segun este habilitado o no =============================================================================================== */ function HabilitaBoton(boton,valor) { boton.disabled = !valor; if ((boton.className == 'boton')&&!valor) { boton.className = 'botonDisabled'; } if ((boton.className == 'botonDisabled')&&valor) { boton.className = 'boton'; } if ((boton.className == 'botonEstrecho')&&!valor) { boton.className = 'botonEstrechoDisabled'; } if ((boton.className == 'botonEstrechoDisabled')&&valor) { boton.className = 'botonEstrecho'; } if ((boton.className == 'botonEstrechoMas')&&!valor) { boton.className = 'botonEstrechoMasDisabled'; } if ((boton.className == 'botonEstrechoMasDisabled')&&valor) { boton.className = 'botonEstrechoMas'; } if ((boton.className == 'botonEstrechoMasDos')&&!valor) { boton.className = 'botonEstrechoMasDosDisabled'; } if ((boton.className == 'botonEstrechoMasDosDisabled')&&valor) { boton.className = 'botonEstrechoMasDos'; } if ((boton.className == 'botonFlecha')&&!valor) { boton.className = 'botonFlechaDisabled'; } if ((boton.className == 'botonFlechaDisabled')&&valor) { boton.className = 'botonFlecha'; } if ((boton.className == 'botonTamanoVar')&&!valor) { boton.className = 'botonTamanoVarDisabled'; } if ((boton.className == 'botonTamanoVarDisabled')&&valor) { boton.className = 'botonTamanoVar'; } if ((boton.className == 'botonEstrechoTamanoVar')&&!valor) { boton.className = 'botonEstrechoTamanoVarDisabled'; } if ((boton.className == 'botonEstrechoTamanoVarDisabled')&&valor) { boton.className = 'botonEstrechoTamanoVar'; } } /* ============================================================================================ DESC: Selecciona la ultima linea de la tabla =============================================================================================== */ function SelecLineaTrasEliminar(tabla,seleccion) { if(seleccion == tabla.lineas.length) { if (tabla.lineas.length != 0) tabla.selectLinea(seleccion-1); } else tabla.selectLinea(seleccion); } /* ============================================================================================ vyctorlm 3/12/2009 Engado o parametro form porque, utilizando o Explorer, na pantalla de informes e necesario indicar o formulario para acceder aos elementos, xa que nesta jsp os criterios estan definidos tantas veces coma div haxa. Polo tanto a sentencia document.all.id devolve unha ristra de elementos (en vez de so o criterio do div activo). INPUT: id: Identificador do elemento form: Parametro que indica o nome do formulario (incluindo un punto final) onde esta definido o elemento. DESC: Devuelve referencia al objeto con id que se le pasa =============================================================================================== */ function getObjetoPorId(id, form) { if (id == '') return; var elemento; if (detectaNavegador() == 'EDGE') { elemento= document.getElementById(id); } else { if (document.all) { if (form) { elemento=eval('document.all.'+form+id); } else { elemento=eval('document.all.'+id); } } else if (document.getElementById) { elemento= document.getElementById(id); } } return elemento; } /* ============================================================================================ DESC: Devuelve referencia a los objeto del encabezado (criterios de busqueda) por id =============================================================================================== */ function getObjetoEncabezado(id) { var elemento; if (document.all) elemento = eval('top.principal.menu.document.all.'+id); else if (document.getElementById) elemento=eval('top.principal.menu.document.getElementById(\''+id+'\')'); return elemento; } /* ============================================================================================ DESC: Devuelve referencia a los objeto del encabezado (criterios de busqueda) por id carlosds-int @ 22/09/2008 Modifica o método para usar getElementById. En calquera caso, dado que a veces este método se usa pasándolle directamente o nome dunha variable declarada no leftFrame, o uso de getElement devolvería un obxecto nulo; si é así, trata de recoller a variable directamente. =============================================================================================== */ function getObjetoListaIzq(objeto) { var elemento; if (document.all) { elemento = eval('top.principal.leftFrame.'+objeto); } else { elemento = top.principal.leftFrame.document.getElementById(objeto); if ( !elemento ) { elemento = eval('top.principal.leftFrame.'+objeto); } } return elemento; } /* ============================================================================================ DESC: Llama a las acciones, respondiendo al evento onclick de los botones, donde se debe poner =============================================================================================== */ function PulsaBoton(evento) { var objeto; if (document.all) objeto = evento.srcElement; else objeto=evento.target; switch (objeto.name) { case 'BotonEliminar': AccionEliminar(); break; case 'BotonEngadir': AccionEngadir(); break; case 'BotonModificar': AccionModificar(); break; case 'BotonAceptar': AccionAceptar(); break; case 'BotonCancelar': AccionCancelar(); break; case 'BotonAsignar': AccionAsignar(); break; case 'BotonAsignarTodos': AccionAsignarTodos(); break; case 'BotonDesAsignar': AccionDesAsignar(); break; case 'BotonDesAsignarTodos': AccionDesAsignarTodos(); break; case 'BotonActDatos': AccionActualizarDatos(); break; default:break; } } /* ============================================================================================ DESC: Llama a las acciones, respondiendo al evento onclick de los botones, donde se debe poner =============================================================================================== */ function PulsaBotonBotones(evento) { var objeto; if (document.all) objeto = evento.srcElement; else objeto=evento.target; switch (objeto.name) { case 'BotonEngadirBotones': AccionEngadirBotones(); break; case 'BotonModificarBotones': AccionModificarBotones(); break; case 'BotonEliminarBotones': AccionEliminarBotones(); break; case 'BotonAceptarBotones': AccionAceptarBotones(); break; case 'BotonCancelarBotones': AccionCancelarBotones(); break; default:break; } } /* ============================================================================================ DESC: Actualiza la lista y el vector asociado a esta. PARAM: oblLista la lista arrayDatos array obtenido del cursor de la consulta arrayRelacion array de elementos formados por 2 elem. El 1º indica el indice del vector fila de la tabla, y el 2º el indice del cursor con el que se corresponde =============================================================================================== */ function CubreListaVector(tabla,arrayDatos,arrayRelacion,escapeado) { var lineas = new Array(); var i=0; var j=0; if (arrayDatos) { for (i=0;i< arrayDatos.length;i++) //filas { var linea = new Array (); for (j=0;j< arrayRelacion.length;j++) //columnas { if (arrayRelacion[j][1] == -1 ) linea[(arrayRelacion[j][0])] = ''; else linea[(arrayRelacion[j][0])] = escapeado?unescape(arrayDatos[i][(arrayRelacion[j][1])]):(arrayDatos[i][(arrayRelacion[j][1])]); } lineas[i] = linea; } } tabla.lineas = lineas; //Añadido 18-11-2002 tabla.displayTabla(); // Eliminado 18-11-2002 //refresh(); } /* ============================================================================================ DESC: Actualiza la lista y el vector asociado a esta. PARAM: oblLista la lista arrayDatos array obtenido del cursor de la consulta arrayRelacion array de elementos formados por 3 elem. El 1º indica el indice del vector fila de la tabla, y el 2º el indice del cursor con el que se corresponde, DIFERENCIAS CON LA ANTERIOR: el tercero si existe indica que el campo debe ser creado com input para ser enviado en el form y es el nombre del campo a crear. Se crean los inputs pertenciendo a la styleClass='inputInvisible' que significa que es un estilo en el que se nota lo menos posible que es un input. Adicionalmente crea un campo con indice el nombre del campo en la linea para guardar el valor directamente (sin ) =============================================================================================== */ function CubreListaVectorInputs(tabla,arrayDatos,arrayRelacion) { var lineas = new Array(); var i=0; var j=0; var texto=""; for (i=0;i< arrayDatos.length;i++) //filas { var linea = new Array (); for (j=0;j< arrayRelacion.length;j++) //columnas { if (arrayRelacion[j][2]) // Si esta definido el tercer componente { texto='input type="text" name="'+arrayRelacion[j][2]+'" id="'+arrayRelacion[j][2]+'" class="inputInvisible" value="'+arrayDatos[i][(arrayRelacion[j][1])]+'"readOnly>'; linea[arrayRelacion[j][2]]=arrayDatos[i][(arrayRelacion[j][1])]; } else texto=arrayDatos[i][(arrayRelacion[j][1])]; linea[(arrayRelacion[j][0])] = texto; } lineas[i] = linea; } tabla.lineas = lineas; refresh(); } /* ============================================================================================ DESC: Recupera el valor de un parametro de la url =============================================================================================== */ function valorParametro(parametro) { var devolver = null; var nombre = document.location.toString(); var pos = 0; pos = nombre.lastIndexOf(parametro); if (pos != -1) { var valor = nombre.substring(pos+1+parametro.length,nombre.length); pos = valor.indexOf('&'); if (pos != -1) { devolver = valor.substring(0,pos); } else { devolver = valor; } } return devolver; } /* * function AnadirLineaConInputs * Crea un array (linea de la tabla) con campos para que puedan ser enviados en el form * * Recibe: arrayNombreCampos - array con los nombres de los campos de la linea * claseInput - el estilo (class) del campo de texto * arrayValores - los valores con los que se rellenarán los campos de la línea * Devuelve: la línea (array) * introduce ademas de los campos con indice numerico, campos con indice nombre del campo,y el valor * directamente, sin inputs */ function AnadirLineaConInputs(arrayNombreCampos,claseInput,arrayValores) { var linea=new Array(); if (arrayNombreCampos.length==arrayValores.length) { for (i=0;i< arrayValores.length;i++) { linea[i]=''; linea[arrayNombreCampos[i]]=arrayValores[i]; } } return linea; } /* * function CrearLineasDeTabla * Crea un array (lineas de la tabla) con las líneas * * Recibe: arrayNombreCampos - array con los nombres de los campos de la linea * claseInput - el estilo (class) de los campos de texto * arrayDeArrays - [['aa','bb']] Array con los valores de cada una de las líneas * Devuelve: las líneas (array) */ function CrearLineasDeTabla(arrayNombreCampos,claseInput,arrayDeArrays) { var lineas=new Array(); for (i=0;i= limite) return false; return true; } /* ====================================================================== FUNCTION: Trim INPUT: str (string): the string to be altered RETURN: A string with no leading or trailing spaces; returns null if invalid arguments were passed DESC: This function removes all leading and tralining spaces from a string. CALLS: This function depends on the functions TrimLeft & TrimRight They must be included in order for this function to work properly. ====================================================================== */ function Trim( str ) { var resultStr = ""; resultStr = TrimLeft(str); resultStr = TrimRight(resultStr); return resultStr; } // end Trim /* ====================================================================== FUNCTION: TrimLeft INPUT: str (string): the string to be altered RETURN: A string with no leading spaces; returns null if invalid arguments were passed DESC: This function removes all leading spaces from a string. ====================================================================== */ function TrimLeft( str ) { var resultStr = ""; var i = len = 0; // Return immediately if an invalid value was passed in if (str+"" == "undefined" || str == null) return null; // Make sure the argument is a string str += ""; if (str.length == 0) resultStr = ""; else { // Loop through string starting at the beginning as long as there // are spaces. // len = str.length - 1; len = str.length; while ((i <= len) && (str.charAt(i) == " ")) i++; // When the loop is done, we're sitting at the first non-space char, // so return that char plus the remaining chars of the string. resultStr = str.substring(i, len); } return resultStr; } // end TrimLeft /* ====================================================================== FUNCTION: TrimRight INPUT: str (string): the string to be altered RETURN: A string with no trailing spaces; returns null if invalid arguments were passed DESC: This function removes all trailing spaces from a string. ====================================================================== */ function TrimRight( str ) { var resultStr = ""; var i = 0; // Return immediately if an invalid value was passed in if (str+"" == "undefined" || str == null) return null; // Make sure the argument is a string str += ""; if (str.length == 0) resultStr = ""; else { // Loop through string starting at the end as long as there // are spaces. i = str.length - 1; while ((i >= 0) && (str.charAt(i) == " ")) i--; // When the loop is done, we're sitting at the last non-space char, // so return that char plus all previous chars of the string. resultStr = str.substring(0, i + 1); } return resultStr; } // end TrimRight /* ====================================================================== FUNCTION: ConstruirCadenaSelectMultiple INPUT: objeto select multiple RETURN: String con values separado por comas DESC: Construye String con values separado por comas ====================================================================== */ function ConstruirCadenaSelectMultiple(objeto) { var devolver = ''; for(i=0;i= (posicion+1) ) devolver = devolverArray[posicion]; } return devolver; } /* ====================================================================== FUNCTION: obtenerSubarrayCondicion INPUT: arrayInicial -> array de datos campo -> campo polo que se filtra condicion -> valor que debe ter o campo "campo" relacion -> array de pares posicion-campo que indica a posición e nome de cada campo no array arrayInicial RETURN: Array de Array DESC: Construye un array con los array del arrayInicial que cumplen la condicion ====================================================================== */ function obtenerSubarrayCondicion(arrayInicial,campo,condicion,relacion) { var Resultado = new Array(); if ((arrayInicial != null )&&(arrayInicial.length > 0 )) { for (i=0;i array de datos campo -> campo polo que se filtra condicion -> valor que debe ter o campo "campo" RETURN: Array de Array DESC: Construye un array con los array del arrayInicial que cumplen la condicion ====================================================================== */ function obtenerSubarrayCondicionJSON(arrayInicial,campo,condicion){ var Resultado = new Array(); var tipo; if ((arrayInicial != null )&&(arrayInicial.length > 0 )){ for (i=0;i array de datos campo -> campo polo que se filtra campo2 -> campo polo que se filtra condicion -> valor que debe ter o campo "campo" condicion2 -> valor que debe ter o campo "campo2" RETURN: Array de Array DESC: Construye un array con los array del arrayInicial que cumplen la condicion ====================================================================== */ function obtenerSubarrayCondicionDosJSON(arrayInicial,campo,campo2,condicion,condicion2){ var Resultado = new Array(); var tipo; var tipo2; if ((arrayInicial != null )&&(arrayInicial.length > 0 )){ for (i=0;i 0 )) { for (i=0;i array de datos campo -> campo polo que se filtra condicion -> valor que debe ter o campo "campo" RETURN: Array de Array DESC: Construye un array con los array del arrayInicial que no cumplen la condicion ====================================================================== */ function obtenerSubarrayNoCondicionJSON(arrayInicial,campo,condicion){ var Resultado = new Array(); var tipo; if ((arrayInicial != null )&&(arrayInicial.length > 0 )){ for (i=0;i array de datos arrayCampos -> array de campos polo que se filtra arrayCondiciones -> array de condiciones polos que se filtra RETURN: Array de Array DESC: Construye un array con los array del arrayInicial que no cumplen las condiciones ====================================================================== */ function obtenerSubarrayNoCondicionArrayJSON(arrayInicial,arrayCampos,arrayCondiciones) { var Resultado = new Array(); var i = 0; var j = 0; if ((arrayInicial != null )&&(arrayInicial.length > 0 )) { if ((arrayCampos != null) && arrayCampos.length>0 && arrayCondiciones !=null && arrayCondiciones.length>0 && arrayCampos.length == arrayCondiciones.length) { for (i=0;i< arrayInicial.length;i++) { obxeto = arrayInicial[i]; var cumpleCondicion = true; for (j=0;j< arrayCampos.length;j++){ if(eval("obxeto." + arrayCampos[j] ) != arrayCondiciones[j]){ cumpleCondicion=false; } } if (!cumpleCondicion) Resultado[Resultado.length] = arrayInicial[i]; } } else{ return arrayInicial; } } return Resultado; } /* ====================================================================== FUNCTION: obtenerSubarrayCondicionOperacion INPUT: array, campo debe cumplir cond, condicion, relacion entre posicion y nombre en la select RETURN: Array de Array DESC: Construye un array con los array del arrayInicial que cumplen la condicion ====================================================================== */ function obtenerSubarrayCondicionOperacion(arrayInicial,campo,condicion,relacion,operacion) { var Resultado = new Array(); if ((arrayInicial != null )&&(arrayInicial.length > 0 )) { for (i=0;i 0 )) { for (i=0;i 0 )) { if ((arrayDos != null) && arrayDos.length>0) { for (i=0;i< arrayInicial.length;i++) { j=0; esta = false; while ((j< arrayDos.length)&&(!esta)) { k=0; igual = true; while ((k< arrayPos.length)&&(igual)) { pos = arrayPos[k]; if (arrayInicial[i][pos] != arrayDos[j][pos]) { igual = false; } k++; } if (igual) esta = true; j++; } if (!esta) Resultado[Resultado.length] = arrayInicial[i]; } } else return arrayInicial; } return Resultado; } /* ====================================================================== FUNCTION: obtenerSubarrayCondicionArray INPUT: array, campo debe cumplir cond, condicion, relacion entre posicion y nombre en la select RETURN: Array de Array DESC: Construye un array con los array del arrayInicial que cumplen la condicion ====================================================================== */ function obtenerSubarrayCondicionArray(arrayInicial,arrayDos,arrayPos) { var Resultado = new Array(); var i = 0; var j = 0; var k = 0; var pos = 0; var igual = true; var esta= false; if ((arrayInicial != null )&&(arrayInicial.length > 0 )) { if ((arrayDos != null) && arrayDos.length>0) { for (i=0;i< arrayInicial.length;i++) { j=0; esta = false; while ((j< arrayDos.length)&&(!esta)) { k=0; igual = true; while ((k 0 )) { for (i=0;i< arrayInicial.length;i++) { var tipo = getElementoPorNombre(arrayInicial[i],relacion,campo); if (tipo == condicion) { Resultado[Resultado.length] = arrayInicial[i]; } } } return Resultado; } /* ====================================================================== FUNCTION: acumularSubarrayCondicionDos INPUT: arrayInicial, campo debe cumplir cond, condicion, relacion entre posicion y nombre en la select arrayBase, el subarray ya conten datos RETURN: Array de Array DESC: Construye un array con los array del arrayInicial que cumplen la condicion ====================================================================== */ function acumularSubarrayCondicionDos(arrayInicial,campo,campo2,condicion,condicion2,relacion,arrayBase) { var Resultado = arrayBase; if (Resultado == null) Resultado = new Array(); if ((arrayInicial != null )&&(arrayInicial.length > 0 )) { for (i=0;i 0 )) { for (i=0;i< arrayInicial.length;i++) { var tipo = getElementoPorNombre(arrayInicial[i],relacion,campo); var tipo2 = getElementoPorNombre(arrayInicial[i],relacion,campo2); var tipo3 = getElementoPorNombre(arrayInicial[i],relacion,campo3); if ((tipo == condicion)&&(tipo2 == condicion2)&&(tipo3 == condicion3)) { Resultado[Resultado.length] = arrayInicial[i]; } } } return Resultado; } /* ====================================================================== FUNCTION: obtenerSubarrayCondicionCatro INPUT: arrayInicial, RETURN: array de array DESC: Similar a obtenerSubarrayCondicionCatro pero para catro condiccións ====================================================================== */ function obtenerSubarrayCondicionCatro(arrayInicial,campo,campo1,campo2,campo3,condicion,condicion1,condicion2,condicion3,relacion) { var Resultado = new Array(); if ((arrayInicial != null )&&(arrayInicial.length > 0 )) { for (i=0;i 0 )) { for(k=0;k< arrayInicial[0].length;k++) //Para saber cuantas columnas tiene el array. { Resultado[k] = new Array(); Resultado[k][0] = arrayInicial[0][k]; } for (i=1;i< arrayInicial.length;i++) { for(k=0;k< arrayInicial[i].length;k++) { Resultado[k][i]=arrayInicial[i][k]; } } } return Resultado; } /* ====================================================================== FUNCTION: round INPUT: Number de JS RETURN: Number DESC: Redondea al numero de digitos X que se le pasa ====================================================================== */ function round(number,X) { // rounds number to X decimal places, defaults to 2 X = (!X ? 2 : X); return Math.round(number*Math.pow(10,X))/Math.pow(10,X); } /* ====================================================================== FUNCTION: DeComaAPunto INPUT: String RETURN: String DESC: Sustituye todas las comas "," en la entrada por puntos "." ====================================================================== */ function DeComaAPunto(texto) { var salida=texto; if ( (texto) && (texto.length>0)) salida= (texto.replace(',','.')); return salida; } /* ====================================================================== FUNCTION: DePuntoAComa INPUT: String RETURN: String DESC: Sustituye todos los puntos "." en la entrada por comas "," ====================================================================== */ function DePuntoAComa(texto) { var salida=texto; if ( (texto) && (texto.length>0)) salida= (texto.replace('.',',')); return salida; } /* ====================================================================== FUNCTION: AjustaString INPUT: String,numero RETURN: String DESC: Si el string tiene menos de n caracteres lo rellena con pad, y si tiene mas lo corta, ====================================================================== */ function AjustaString(texto,numcar,pad) { var salida=texto; var mipad=(pad)?pad:' '; var lonxitude; var diferencia; if ( (texto) ) { lonxitude=texto.length; if (lonxitude>numcar) // hay que recortarlo salida=texto.substring(0,(numcar-1)); else if (lonxitude< numcar) // hay que rellenarlo con mipad { diferencia=(numcar-lonxitude); for (var i=0;i< diferencia;i++) salida+=mipad; } } return salida; } /* ====================================================================== FUNCTION: MostrarMensajeEspera INPUT: div contiene a la table RETURN: DESC: Escribe en la tabla esperando ====================================================================== */ function MostrarMensajeEspera(objeto) { var mensaje = ''; mensaje += ''; mensaje += ''; mensaje += ''; mensaje += '
Agarde un momento, por favor.
'; objeto.innerHTML=mensaje; } /* ====================================================================== FUNCTION: MostrarMensajeBusquedaVacia INPUT: div contiene a la table alto: alto da mensaxe (normalmente altura da taboa + 10: necesario en Firefox, irrelevante no Explorer) RETURN: DESC: Escribe en la tabla esperando ====================================================================== */ function MostrarMensajeBusquedaVacia(objeto, alto) { var mensaje = ''; mensaje += ''; if (alto == null) { mensaje += ''; } else { mensaje += ''; } mensaje += ''; mensaje += '
Non existen elementos que cumpran os criterios de búsqueda.Non existen elementos que cumpran os criterios de búsqueda.
'; objeto.innerHTML=mensaje; } /* ====================================================================== FUNCTION: MostrarMensajeEsperaLonga INPUT: div contiene a la table RETURN: DESC: Escribe en la tabla esperando ====================================================================== */ function MostrarMensajeEsperaLonga(objeto) { var mensaje = ''; mensaje += ''; mensaje += ''; mensaje += ''; mensaje += '
Este é un proceso longo. Agarde ... por favor.
'; objeto.innerHTML=mensaje; } /* ====================================================================== FUNCTION: Obtener Vector Mese INPUT: RETURN: Array con los meses del año DESC: contruye un array con los meses del año ====================================================================== */ function ObtenVectorMeses() { var arrayMeses = [["09","Setembro"],["10","Outubro"],["11","Novembro"], ["12","Decembro"],["01","Xaneiro"],["02","Febreiro"],["03","Marzo"], ["04","Abril"],["05","Maio"],["06","Xuño"],["07","Xullo"],["08","Agosto"]]; return arrayMeses; } /* ====================================================================== FUNCTION: Pon2PuntosHora INPUT: hora (texto de hora en formato HHMM RETURN: hora en formato HH:MM DESC: Mete los 2 puntos entre hora y minutos ====================================================================== */ function Pon2PuntosHora(hora) { var salida=''; if (hora) { if (hora.length==4) { salida=hora.substr(0,2)+':'+hora.substr(2,2); }} return salida; } /* ====================================================================== FUNCTION: Quita2PuntosHora INPUT: hora (texto de hora en formato HH:MM RETURN: hora en formato HHMM DESC: Quita los 2 puntos entre hora y minutos ====================================================================== */ function Quita2PuntosHora(hora) { var salida=''; if (hora) { if (hora.length==5) { salida=hora.substr(0,2)+hora.substr(3,2); }} return salida; } /* ====================================================================== FUNCTION: estaSeguroBen INPUT: mensaxe: opcional, se concatena si non e nullo o 'Está seguro' RETURN: EL String ¿Esta seguro correctamnete ? DESC: ====================================================================== */ function estaSeguroBen(mensaxe) { var msg = ''; if(mensaxe!=null){ msg = mensaxe; } return unescape(msg + '%BFEst%E1 seguro%3F'); } /* ====================================================================== FUNCTION: estaSeguroBenESAPl ====================================================================== */ function estaSeguroBenESAPl() { return unescape('%BFConfirma o borrado de esta matr%EDcula%3F'); } /* ====================================================================== FUNCTION: estaSeguroBenVerificarDOI INPUT: RETURN: Mensaxe de confirmación alertando do perigo de confundirse de DOI DESC: ====================================================================== */ function estaSeguroBenVerificarDOI() { return unescape('%C9 moi importante que antes de gravar os datos comprobe que o DOI (DNI, pasaporte,..) que aparece rexistrado para este alumno sexa o que lle corresponde. O rexistro de DOIs incorrectos (DNI do pai, nai ou terceira persoa) pode provocar suplantaci%F3ns de identidade e p%E9rdida de datos. O centro %E9 responsable de garantir a exactitude e veracidade dos datos introducidos'); } /* ====================================================================== FUNCTION: MostrarBarraProcesando INPUT: div contiene a la table RETURN: DESC: Escribe en la tabla esperando ====================================================================== */ var timeoutProcesando; /** * MostrarBarraProcesando LLama a la apertura de una ventana emergente * @param div div contiene a la table * @return **/ function MostrarBarraProcesando(parametro) { var timeoutDivPechar = 20000; if (parametro != null) { timeoutDivPechar = parametro; } top.VENTANA_CARGADA = false; top.document.getElementById('divProcesando').style.visibility = 'visible'; timeoutProcesando = setTimeout("mostrarDivPecharProcesando()", timeoutDivPechar); } /** * CerrarBarraProcesando LLama al cierre de la ventana emergente * @return **/ function CerrarBarraProcesando() { if(top.document.getElementById('divProcesando')!=null){ top.document.getElementById('divProcesando').style.visibility = 'hidden'; } cerrarDivPecharProcesando(); top.VENTANA_CARGADA = true; } /** * MostrarBarraProcesandoInformes LLama a la apertura de una ventana emergente * @param div div contiene a la table * @return **/ function MostrarBarraProcesandoInformes(parametro) { var timeoutDivPechar = 20000; if (parametro != null) { timeoutDivPechar = parametro; } top.VENTANA_CARGADA = false; top.document.getElementById('divProcesando').style.visibility = 'visible'; timeoutProcesando = setTimeout("mostrarDivPecharProcesando()", timeoutDivPechar); } /** * CerrarBarraProcesandoInformes LLama al cierre de la ventana emergente * @return **/ function CerrarBarraProcesandoInformes() { if(top.document.getElementById('divProcesando')!=null){ top.document.getElementById('divProcesando').style.visibility = 'hidden'; } cerrarDivPecharProcesando(); top.VENTANA_CARGADA = true; } /** * mostrarDivPecharProcesando Amosa a parte do div de procesando para permitir pechalo * @return **/ function mostrarDivPecharProcesando() { if (top.document.getElementById('divProcesando').style.visibility == 'visible') { top.document.getElementById('pecharDivProcesando').style.visibility = 'visible'; } } /** * cerrarDivPecharProcesando Cerra a parte do div de procesando para permitir pechalo * @return **/ function cerrarDivPecharProcesando() { if(top.document.getElementById('pecharDivProcesando')!=null){ top.document.getElementById('pecharDivProcesando').style.visibility = 'hidden'; } clearTimeout(timeoutProcesando); } /* ====================================================================== FUNCTION: MostrarBarraProcesandoXerador INPUT: div contiene a la table RETURN: DESC: Escribe en la tabla esperando ====================================================================== */ /** * MostrarBarraProcesandoXerador LLama a la apertura de una ventana emergente * @param div div contiene a la table * @return **/ function MostrarBarraProcesandoXerador(parametro) { var timeoutDivPechar = 20000; if (parametro != null) { timeoutDivPechar = parametro; } top.VENTANA_CARGADA = false; top.document.getElementById('divProcesando').style.visibility = 'visible'; timeoutProcesando = setTimeout("mostrarDivPecharProcesando()", timeoutDivPechar); } /** * CerrarBarraProcesandoXerador LLama al cierre de la ventana emergente * @return **/ function CerrarBarraProcesandoXerador() { if(top.document.getElementById('divProcesando')!=null){ top.document.getElementById('divProcesando').style.visibility = 'hidden'; } cerrarDivPecharProcesando(); top.VENTANA_CARGADA = true; } function DeshabilitaBotonesListaIzq(NovoEstado) { HabilitaBoton(getObjetoListaIzq('botonListaPrimero'),NovoEstado); HabilitaBoton(getObjetoListaIzq('botonListaAnterior'),NovoEstado); HabilitaBoton(getObjetoListaIzq('botonListaSiguiente'),NovoEstado); HabilitaBoton(getObjetoListaIzq('botonListaUltimo'),NovoEstado); } function ActualizaContadorListaIza(lista) { getObjetoListaIzq('cont').value = lista.lineas.length; } function BotonCalendarioEstado(link,imagen,NuevoEstado) { if (!NuevoEstado) { getObjetoPorId(imagen).src = "/xade/imagen/calendario/icono2.gif;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; getObjetoPorId(link).style.cursor = 'default'; } else { getObjetoPorId(imagen).src = "/xade/imagen/calendario/icono.gif;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03" getObjetoPorId(link).style.cursor = 'hand'; } } function CalendarioEstado(imagen) { var Estado = false; if (imagen == "/xade/imagen/calendario/icono.gif;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03") Estado = true; return Estado; } function BotonLupaEstado(objeto,NuevoEstado) { if (!NuevoEstado) { objeto.src = "/xade/imagen/lupa_desactivo.jpg;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'default'; HabilitaBoton(objeto,NuevoEstado); } else { objeto.src = "/xade/imagen/lupa_activo.jpg;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'hand'; HabilitaBoton(objeto,NuevoEstado); } } function BotonMenosEstado(objeto,NuevoEstado) { if (!NuevoEstado) { objeto.src = "/xade/imagen/menos_desactivo.jpg;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'default'; HabilitaBoton(objeto,NuevoEstado); } else { objeto.src = "/xade/imagen/menos_activo.jpg;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'pointer'; HabilitaBoton(objeto,NuevoEstado); } } function BotonMaisEstado(objeto,NuevoEstado) { if (!NuevoEstado) { objeto.src = "/xade/imagen/mais_desactivo.jpg;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'default'; HabilitaBoton(objeto,NuevoEstado); } else { objeto.src = "/xade/imagen/mais_activo.jpg;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'pointer'; HabilitaBoton(objeto,NuevoEstado); } } function BotonFlechaArribaEstado(objeto,NuevoEstado) { if (!NuevoEstado) { objeto.src = "/xade/imagen/flecha_arriba_deshabilitado.gif;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'default'; HabilitaBoton(objeto,NuevoEstado); } else { objeto.src = "/xade/imagen/flecha_arriba.gif;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'pointer'; HabilitaBoton(objeto,NuevoEstado); } } function BotonFlechaAbaixoEstado(objeto,NuevoEstado) { if (!NuevoEstado) { objeto.src = "/xade/imagen/flecha_abajo_deshabilitado.gif;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'default'; HabilitaBoton(objeto,NuevoEstado); } else { objeto.src = "/xade/imagen/flecha_abajo.gif;jsessionid=jgGbJTuxQlLtOU4EdxvpVyj8.prd-jboss-c04-0004-hc-001:prd-jboss-c04-0004-hc-001-server-03"; objeto.style.cursor = 'pointer'; HabilitaBoton(objeto,NuevoEstado); } } /** * openW Crea un array con las ventanas emergentes abiertas para * controlar su cierre posterior y declara la apertura de la ventana. * @param url Ruta de la página que abrirá la ventana emergente * @param nombre Nombre de la ventana emergente * @param parametros Parametros necesarios para la adireccion de la ventana emergente * @return No retorna nada **/ function openW(url, nombre, parametros) { if (!top.childW) top.childW = new Array(); var ventana = window.open(url, nombre, parametros); // Forzamos que o opener sexa sempre o top, a ventana principal, e non ningún dos frames if (ventana) ventana.opener = top.window; var ventanaincluida = false; for(i=top.childW.length - 1; i == 0 ; i--) { try { if (ventana.name == top.childW[i].name) ventanaincluida = true; } catch(error) { delete top.childW[i] } } if (!ventanaincluida) { top.childW.push(ventana); } } /** * closeW Utiliza el array de las ventanas emergentes para cerrarlas todas * @return No retorna nada **/ function closeW() { if(!top.childW) return; var x = 0; for (x = 0; x < top.childW.length; x++) { try { if (top.childW[x].name) top.childW[x].close(); } catch(error) {} } top.childW = []; } /** Comproba a existencia de elementos nun array global, definido por unha cadea identificativa. Si existe, e ten elementos, devolve true, false en caso contrario. */ function ExisteElementoGlobal(nomeElemento) { var f = true; switch (nomeElemento) { case 'QUENDA': if (top.XERAL_VectorQuendasCentroPorEnsinanzaRexime) { if (top.XERAL_VectorQuendasCentroPorEnsinanzaRexime.length == 0) { f = false; } } else { f = false; } break; default: break; } return f; } /* ============================================================================================ DESC: Cubre un combo (text,value) con el array de obxetos =============================================================================================== */ function CubreComboObxetoMultiValueTexto( combo,arrayObxetos, arrayGetterValues, arrayGetterText, paramTextNoSelec, nousarValorDefecto, separador){ if (!combo) return; if (!combo.options) return; if (!arrayObxetos) return; var j = 0; var i = 0; var varValue = ''; var varText = ''; var textoNoSelec = 'Sen selección'; var caracterSeparador = '_'; if ((separador!=null)&&(separador!='')){ caracterSeparador = separador; } if ((paramTextNoSelec)&& (paramTextNoSelec!=null)&&(paramTextNoSelec!='')){ textoNoSelec = paramTextNoSelec; } var opcion = new Option(); if (!nousarValorDefecto){ opcion.value = ''; opcion.text = textoNoSelec; combo.options[combo.options.length]= opcion; } var obxeto = null; for (i=0; i < arrayObxetos.length ; i++){ opcion = new Option(); varValue = ''; obxeto = arrayObxetos[i]; for (j=0;j< arrayGetterValues.length;j++){ if (j==0){ varValue += eval("obxeto." + arrayGetterValues[j] + "()" ); }else{ varValue += caracterSeparador + eval("obxeto." + arrayGetterValues[j] + "()" ); } } opcion.value = varValue; varText = ''; j = 0; for (j=0;j< arrayGetterText.length;j++){ if (j==0){ varText += eval("obxeto." + arrayGetterText[j] + "()" ); }else{ varText += caracterSeparador + eval("obxeto." + arrayGetterText[j] + "()" ); } } opcion.text = varText; combo.options[combo.options.length]= opcion; } } function CubreComboObxetoMultiValueTexFromJSon( combo,arrayObxetos, arrayGetterValues, arrayGetterText, paramTextNoSelec, nousarValorDefecto, separador){ if (!combo) return; if (!combo.options) return; if (!arrayObxetos) return; var j = 0; var i = 0; var varValue = ''; var varText = ''; var textoNoSelec = 'Sen selección'; var caracterSeparador = '_'; if ((separador!=null)&&(separador!='')){ caracterSeparador = separador; } if ((paramTextNoSelec)&& (paramTextNoSelec!=null)&&(paramTextNoSelec!='')){ textoNoSelec = paramTextNoSelec; } var opcion = new Option(); if (!nousarValorDefecto){ opcion.value = ''; opcion.text = textoNoSelec; combo.options[combo.options.length]= opcion; } var obxeto = null; for (i=0; i < arrayObxetos.length ; i++){ opcion = new Option(); varValue = ''; obxeto = arrayObxetos[i]; for (j=0;j< arrayGetterValues.length;j++){ if (j==0){ varValue += eval("obxeto." + arrayGetterValues[j] ); }else{ varValue += caracterSeparador + eval("obxeto." + arrayGetterValues[j]); } } opcion.value = varValue; varText = ''; j = 0; for (j=0;j< arrayGetterText.length;j++){ if (j==0){ varText += eval("obxeto." + arrayGetterText[j]); }else{ varText += caracterSeparador + eval("obxeto." + arrayGetterText[j]); } } opcion.text = varText; combo.options[combo.options.length]= opcion; } } function indefinidoAEspacio(sValor){ if (typeof sValor === "undefined" || null == sValor){ return ''; } return sValor; } function detectaNavegador() { // Opera 8.0+ var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; if (isOpera) return ('OPERA'); // Firefox 1.0+ var isFirefox = typeof InstallTrigger !== 'undefined'; if (isFirefox) return ('FIREFOX'); // Safari 3.0+ "[object HTMLElementConstructor]" var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification)); if (isSafari) return ('SAFARI'); // Internet Explorer 6-11 var isIE = /*@cc_on!@*/false || !!document.documentMode; if (isIE) return ('IE'); // Edge 20+ var isEdge = !isIE && !!window.StyleMedia; if (isEdge) return ('EDGE'); isEdge = navigator.userAgent.indexOf("Edge") !== -1; if (isEdge) return ('EDGE'); // Chrome 1+ var isChrome = !!window.chrome && !!window.chrome.webstore; if (isChrome) return ('CHROME'); isChrome = navigator.userAgent.indexOf("Chrome") !== -1; if (isChrome) return ('CHROME'); // Blink engine detection var isBlink = (isChrome || isOpera) && !!window.CSS; if (isBlink) return ('BLINK'); }