/web/js/utils.js
JavaScript | 2677 lines | 2180 code | 70 blank | 427 comment | 333 complexity | 0f8d11c391d4779d68fbd732f2a005b3 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.0
Large files files are truncated, but you can click here to view the full file
- /*
- *************************************************************************
- * The contents of this file are subject to the Openbravo Public License
- * Version 1.0 (the "License"), being the Mozilla Public License
- * Version 1.1 with a permitted attribution clause; you may not use this
- * file except in compliance with the License. You may obtain a copy of
- * the License at http://www.openbravo.com/legal/license.html
- * Software distributed under the License is distributed on an "AS IS"
- * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
- * License for the specific language governing rights and limitations
- * under the License.
- * The Original Code is Openbravo ERP.
- * The Initial Developer of the Original Code is Openbravo SL
- * All portions are Copyright (C) 2001-2006 Openbravo SL
- * All Rights Reserved.
- * Contributor(s): ______________________________________.
- ************************************************************************
- */
- <!--
- var baseFrameServlet = "http://localhost:8880/openbravo/security/Login_FS.html";
- var gColorSelected = "#c0c0c0";
- var gWhiteColor = "#F2EEEE";
- var arrGeneralChange=new Array();
- var dateFormat;
- var defaultDateFormat = "%d-%m-%Y";
- //Array de los números de días de cada mes
- daysOfMonth = new Array(
- new Array(0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31), //No bisiestos
- new Array (0,31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) //Bisiestos
- );
- /**
- * Esta librería JavaScript contiene las funciones y procedimientos básicos que se utilizan en
- * todas las páginas html. Son elementos básicos como el posicionamiento del foco en un control
- * de la página, control de campos numéricos...
- */
- var gBotonPorDefecto;
- var gEnviado=false;
- var arrTeclas=null;
- var gAUXILIAR=0;
- var gWaitingCallOut=false;
- /**
- * @name focoPrimerControl
- * @format function focoPrimerControl(Formulario, Campo)
- * @comment Posiciona el cursor en el primer campo visible de un formulario
- *
- * @param <b>Formulario</b> - Es un parámetro que puede no existir, pero que indica cúal es el formulario
- * donde se encuentra el campo sobre el que queremos posicionar el cursor. En
- * caso de no existir este parámetro, se toma el primer formulario de la página. <BR>
- * <b>Campo</b> - Nombre del control en el que se quiere posicionar el foco
- * @example focoPrimerControl();
- */
- function focoPrimerControl(Formulario, Campo)
- {
- var encontrado = false;
- if (Formulario==null) Formulario=document.forms[0];
- var total = Formulario.length;
- for(var i=0;i<total; i++)
- {
- if ((Formulario.elements[i].type != "hidden") && (Formulario.elements[i].type != "button") && (Formulario.elements[i].type != "submit") && (Formulario.elements[i].type != "image") && (Formulario.elements[i].type != "reset"))
- {
- if(Campo!=null) {
- if (Campo == Formulario.elements[i].name && !Formulario.elements[i].readonly && !Formulario.elements[i].disabled) {
- Formulario.elements[i].focus();
- encontrado=true;
- break;
- }
- } else if (!Formulario.elements[i].readonly && !Formulario.elements[i].disabled) {
- try {
- Formulario.elements[i].focus();
- encontrado=true;
- break;
- } catch (ignore) {}
- }
- }
- }
- if (encontrado && Formulario.elements[i].type && Formulario.elements[i].type.indexOf("select")==-1)
- Formulario.elements[i].select();
- }
- /**
- * @name limpiar
- * @format function limpiar(Formulario)
- * @comment Borra el contenido de los campos de texto de un formulario
- *
- * @param <b>Formulario</b> - Toma el valor del formulario donde están los campos que queremos limpiar
- * y si no existe, toma el primer formulario de la página
- * @example limpiar();
- */
- function limpiar(Formulario)
- {
- if (Formulario == null)
- Formulario = document.forms[0];
- var total = Formulario.length;
- for (var i=0;i<total;i++){
- if (Formulario.elements[i].type == "text" || Formulario.elements[i].type == "password")
- Formulario.elements[i].value = "";
- }
- }
- /**
- * @name confirmar
- * @format function confirmar(Accion)
- * @comment Es la encargada de presentar un mensaje o no, dependiendo de la <b>Accion<b> que se le
- * pase. Esta función es utilizada por las funciones que realizan envíos de formularios.
- * @param <b>Accion</b> - es un texto que indentifica el <b>Command</b> que se ejecuta.
- * @return <b>true</b> - en caso de no tener mensaje asociado a dicho <b>Command</b>, o si el usuario
- * ha confirmado el mensaje presentado.<BR>
- * <b>false</b> - si el usuario no confirma el mensaje presentado.
- */
- function confirmar(accion)
- {
- switch (accion)
- {
- case 'DELETE': return mensaje(2);
- case 'DELETE_RELATION': return mensaje(2);
- case 'GUARDAR': return mensaje(3);
- default: return true;
- }
- }
- function submitFormGetParams(Command, action) {
- var frm = document.forms[0];
- frm.action=action + "?Command=" + Command;
- var params="";
- for (var i=2;arguments[i]!=null;i++) {
- params += "&" + arguments[i] + ((arguments[i+1]!=null)?("=" + arguments[i+1]):"");
- i++;
- }
- if (params!="") frm.action += params;
- frm.target="_self";
- frm.submit();
- return true;
- }
- /**
- * @name getParamsScript
- * @format function getParamsScript(Formulario)
- * @comment Esta función recibe un Formulario en el que existen campos que se quieren enviar y, ella se encarga
- * de capturar todos los campos del formulario con sus valores y transformarlos en una cadena de
- * parámetros de un método GET para poderlos enviar.
- *
- * @param <b>Formulario</b> - Es el objeto formulario que se quiere enviar. Este parámetro es obligatorio.
- * @example getParamScript(document.forms[0]);
- */
- function getParamsScript(Formulario) {
- if (Formulario==null) return "";
- var script="";
- var total = Formulario.length;
- for (var i=0;i<total;i++) {
- if (Formulario.elements[i].type && (Formulario.elements[i].type != "button") && (Formulario.elements[i].type != "submit") && (Formulario.elements[i].type != "image") && (Formulario.elements[i].type != "reset") && (Formulario.elements[i].readonly!="true") && (Formulario.elements[i].name != "Command") && (Formulario.elements[i].name!="") && !Formulario.elements[i].disabled) {
- if (Formulario.elements[i].type.toUpperCase().indexOf("SELECT")!=-1 && Formulario.elements[i].selectedIndex!=-1) {
- script += ((script=="")?"":"&") + Formulario.elements[i].name + "=" + escape(Formulario.elements[i].options[Formulario.elements[i].selectedIndex].value);
- } else if (Formulario.elements[i].type.toUpperCase().indexOf("CHECKBOX")!=-1 || Formulario.elements[i].type.toUpperCase().indexOf("RADIO")!=-1) {
- if (radioValue(Formulario.elements[i]) != null) script += ((script=="")?"":"&") + Formulario.elements[i].name + "=" + escape(radioValue(Formulario.elements[i]));
- } else if (Formulario.elements[i].value!=null && Formulario.elements[i].value!="") {
- script += ((script=="")?"":"&") + Formulario.elements[i].name + "=" + escape(Formulario.elements[i].value);
- }
- }
- }
- return script;
- }
- /**
- * @name submitForm
- * @format function submitForm(Campo, Valor, Formulario, Comprobar)
- * @comment Esta función envía un formulario poniendo un valor que se le pasa en un campo que se
- * le indica antes de enviarlo y pudiendo comprobar si ya se había llamado a esta función
- * sin haber podido obtener un resultado todavía, es decir, comprobando que si se está
- * enviando todavía no permita volver a enviar hasta que no se realice el primer envío.
- *
- * @param <b>Campo</b> - Un objeto que referencia al campo en el que queremos depositar un valor que
- * le pasamos a continuación. <BR>
- * <b>Valor</b> - Un string que indica el valor que queremos dejar en el campo que le hemos
- * indicado antes. <BR>
- * <b>Formulario</b> - Un objeto que referencia al formulario que queremos enviar. Si este
- * parámetro se deja a null se entiende que es el formulario primero de la página. <BR>
- * <b>Comprobar</b> - Booleano que indica si queremos que controle si ya se está enviando
- * este formulario, no realizando varios envíos a la vez. El valor de este parámetro,
- * por defecto, es false
- *
- * @return <b>true</b> - si todo va bien y los datos son enviados correctamente.<BR>
- * <b>false</b> - si hay algún problema y los datos no se pueden enviar.
- * @example submitForm(document.forms[0].inpCampo, "FIND", null, true);
- */
- function submitForm(campo, valor, Formulario, bolComprobar, isCallOut) {
- if (Formulario == null) Formulario = document.forms[0];
- if (isCallOut==null) isCallOut = false;
- if (bolComprobar!=null && bolComprobar) {
- if (gEnviado==1) {
- mensaje(16);
- return false;
- } else {
- gEnviado=1;
- if (isCallOut) gWaitingCallOut=true;
- campo.value = valor;
- Formulario.submit();
- }
- } else {
- if (isCallOut) gWaitingCallOut=true;
- campo.value = valor;
- Formulario.submit();
- }
- return true;
- }
- /**
- * @name reloadFunction
- * @format function reloadFunction(text)
- * @comment Esta función se encarga de retrasar la ejecución del comando que se le pasa por parámetro,
- * el cual será llamado al pasar un tiempo determinado. Se utiliza para simular un timer en
- * javascript.
- *
- * @param <b>text</b> - Es una cadena de texto que contiene un comando javascript.
- *
- * @return <b>ID</b> - Devuelve el identificador del timer para poder cancelarlo en cualquier momento.
- * @example reloadFunction("alert('prueba');");
- */
- function reloadFunction(text) {
- return setTimeout(text, 1000);
- }
- /**
- * @name setChangedField
- * @format function setChangedField(campo, Formulario)
- * @comment Se encarga de marcar cuál ha sido el último campo cambiado para depurar si en una pantalla,
- * se han producido cambios. Requiere la existencia de un campo llamado inpLastFieldChanged.
- *
- * @param <b>campo</b> - Es un objeto que contiene el campo que ha sido modificado. Normalmente colocaremos
- * esta función en el onChange del propio campo modificado, por lo que en este parámetro
- * pasaremos el objeto this.<BR>
- * <b>Formulario</b> - Es el formulario en el que se encuentra el campo inpLastFieldChanged. Si se
- * encuentra en el formulario principal de la ventana, no es necesario indicarlo.
- *
- * @return <b>true</b> - Si todo va bien.<BR>
- * <b>false</b> - Si no encuentra el campo inpLastFieldChanged.
- * @example onChange="setChangedField(this);return true;"
- */
- function setChangedField(campo, Formulario) {
- if (Formulario==null || !Formulario) Formulario = document.forms[0];
- if (Formulario.inpLastFieldChanged==null) return false;
- Formulario.inpLastFieldChanged.value = campo.name;
- return true;
- }
- /**
- * @name checkForChanges
- * @format function checkForChanges(Formulario)
- * @comment Esta función comprueba si se han producido cambios en el formulario que se le indique.
- * Es necesario que exista un campo llamado inpLastFieldChanged, ya que es sobre este campo
- * sobre el que comprueba si existen modificaciones. Esta función es complemento de la función
- * setChangedField.
- *
- * @param <b>Formulario</b> - Es el formulario en el que se encuentra el campo inpLastFieldChanged. Si se
- * encuentra en el formulario principal de la ventana, no es necesario indicarlo.
- *
- * @return <b>true</b> - Si el campo inpLastFieldChanged contiene algún dato y se pulsa OK en el mensaje emergente.<BR>
- * <b>false</b> - Si no contiene ningún dato o se pulsa CANCEL en el mensaje emergente.
- * @example checkForChanges();
- */
- function checkForChanges(Formulario) {
- if (Formulario==null) Formulario = document.forms[0];
- if (inputValue(Formulario.inpLastFieldChanged)!="") {
- if (!mensaje(10)) return false;
- }
- return true;
- }
- function sendDirectLink(Formulario, columnName, parentKey, url, keyId, tableId, newTarget, bolComprobarCambios) {
- if (Formulario == null) Formulario = document.forms[0];
- var frmDepuracion = document.forms[0];
- var accion = "DEFAULT";
- if (bolComprobarCambios==null) bolComprobarCambios = false;
- if (arrGeneralChange!=null && arrGeneralChange.length>0 && bolComprobarCambios) {
- var strFunction = "sendDirectLink('" + Formulario.name + "', '" + columnName + "', '" + parentKey + "', '" + url + "', '" + keyId + "', '" + tableId + "', " + ((newTarget==null)?"null":"'" + newTarget + "'") + ", " + bolComprobarCambios + ")";
- reloadFunction(strFunction);
- return false;
- }
- if (bolComprobarCambios && !checkForChanges(frmDepuracion)) return false;
- if (confirmar(accion)) {
- Formulario.action = url;
- if (newTarget != null) Formulario.target = newTarget;
- Formulario.inpKeyReferenceColumnName.value = columnName;
- Formulario.inpSecondKey.value = parentKey;
- Formulario.inpKeyReferenceId.value = keyId;
- Formulario.inpTableReferenceId.value = tableId;
- submitForm(Formulario.Command, accion, Formulario, false, false);
- }
- return true;
- }
- function dispatchEventChange(target) {
- if (!target) return true;
- if (!target.type) return true;
- if (target.onchange && target.defaultValue && target.defaultValue != inputValue(target)) target.onchange();
- else if (target.onblur) target.onblur();
- return true;
- }
- /**
- * @name submitCommandForm
- * @format function submitCommandForm(Command, Depurar, Formulario, newAction, newTarget, Comprobar, ComprobarCambios, isCallOut)
- * @comment Esta es la función que principalmente se utilizará para implementar las operaciones
- * a realizar por los botones que pongamos en la página. Su misión es la de enviar un
- * formulario poniendo el Command (se trata de un texto que utilizamos para indicar al
- * servlet el tipo de operación que queremos que realice o el botón que le ha llamado)
- * que indiquemos. Permite hacer una depuración previa, pudiendo cancelar el envío si la
- * depuración no es satisfactoria.<BR><BR>
- *
- * La ejecución de esta función requiere que en el formulario a enviar exista un campo
- * oculto que se llame <b>Command</b>, el cual lo utilizará esta función para enviar el
- * Command que le indiquemos.
- *
- * @param <b>Command</b> - Texto que permite al servlet identificar que tipo de operación debe
- * realizar o qué botón le ha llamado. <BR>
- * <b>Depurar</b> - Booleano que indica si se quiere realizar una depuración antes de enviar
- * el formulario. El valor de este campo, por defecto, es false. Si esta opción se pone a
- * true, se deberá implementar una función en la propia página que se llame <b>depurar</b>
- * y en la que realizaremos las depuraciones pertinentes, devolviendo true o false
- * obligatoriamente. Si devolvemos false no se enviará el formulario. Esta función recibe
- * como parámetro el <b>Command</b>. <BR>
- * <b>Formulario</b> - Un objeto que referencia al formulario que queremos enviar. Si este
- * dato se pone null, se entiende que se trata del primer formulario de la página. <BR>
- * <b>newAction</b> - Un string que indica la URL de la página a la que queremos enviar el
- * formulario. Si se deja a null no se cambia la URL que tenga establecido el formulario
- * en su propiedad <b>action</b> <BR>
- * <b>newTarget</b> - Un string que indica un nombre de una ventana o frame al que queremos
- * enviar el formulario. Se refiere a la propiedad <b>target</b> del formulario. Si esta
- * opción no se indica o se deja a null, se mantiene la que ponga en el formulario. <BR>
- * <b>Comprobar</b> - Booleano que indica si queremos que controle si ya se ha pulsado este
- * botón anteriormente y todavía no ha podido contestar el servidor, evitando que un usuario
- * pueda dar varias veces al mismo botón, creyendo que no le ha dado, porque tarda en responder.
- * El valor por defecto de este parámetro es false.<BR>
- * <b>ComprobarCambios</b> - Booleano que indica si queremos que la función compruebe, previamente,
- * si se han producido cambios de datos en la ventana, presentando en tal caso el mensaje emergente
- * correspondiente.<BR>
- * <b>isCallOut</b> - Booleano que indica si estamos haciendo una llamada a un callout.
- *
- * @return <b>true</b> - si todo va correctamente y se envían los datos.<BR>
- * <b>false</b> - si hay algún problema y los datos no se pueden enviar o se cancela el envío al pulsar
- * CANCEL en el mensaje emergente de aviso de cambios en la ventana.
- * @example submitCommandForm("FIND", false, null, null, null, true, null, false);
- */
- function submitCommandForm(accion, bolDepurar, Formulario, newAction, newTarget, bolComprobar, bolComprobarCambios, isCallOut, controlEvt, evt)
- {
- if (Formulario == null) Formulario = document.forms[0];
- if (bolDepurar!=null && bolDepurar==true) if (!depurar(accion, Formulario, "")) return false;
- if (bolComprobarCambios==null) bolComprobarCambios = false;
- if (isCallOut==null) isCallOut = false;
- if (controlEvt==null) controlEvt = false;
- if (controlEvt) {
- if (!evt) evt = window.event;
- var target = (document.layers) ? evt.target : evt.srcElement;
- dispatchEventChange(target);
- }
- if (gWaitingCallOut || (arrGeneralChange!=null && arrGeneralChange.length>0 && bolComprobarCambios)) {
- var strFunction = "submitCommandForm('" + accion + "', " + bolDepurar + ", " + Formulario.name + ", " + ((newAction!=null)?("'" + newAction + "'"):"null") + ", " + ((newTarget!=null)?("'" + newTarget + "'"):"null") + ", " + bolComprobar + ", " + bolComprobarCambios + ")";
- reloadFunction(strFunction);
- return false;
- }
- if (bolComprobarCambios && !checkForChanges(Formulario)) return false;
- if (confirmar(accion)) {
- if (newAction != null) Formulario.action = newAction;
- if (newTarget != null) Formulario.target = newTarget;
- submitForm(Formulario.Command, accion, Formulario, bolComprobar, isCallOut);
- }
- return true;
- }
- /**
- * @name submitCommandFormParameter
- * @format function submitCommandFormParameter(Command, Campo, Valor, Depurar, Formulario,
- * newAction, newTarget, Comprobar, ComprobarCambios, isCallOut)
- * @comment Esta es la función que principalmente se utilizará para implementar las operaciones
- * a realizar por los botones que pongamos en la página, en los casos en los que queramos
- * que, además, envíe un parámetro adicional en función del Link que pinche, de forma que
- * su aplicación práctica sería para ir al detalle de una línea concreta que de una relación,
- * de forma que deberemos indicar la clave de la línea de la que queremos ver su detalle,
- * valor que será diferente dependiendo de la línea que elijamos. Su misión es la de enviar
- * un formulario poniendo el Command (se trata de un texto que utilizamos para indicar al
- * servlet el tipo de operación que queremos que realice o el botón que le ha llamado) que
- * indiquemos y el valor del que antes hablábamos en un campo del formulario, campo que debe
- * existir y que, por lo general será un campo oculto. Permite hacer una depuración previa,
- * pudiendo cancelar el envío si la depuración no es satisfactoria.<BR><BR>
- *
- * La ejecución de esta función requiere que en el formulario a enviar exista un campo oculto
- * que se llame <b>Command</b>, el cual lo utilizará esta función para enviar el Command que
- * le indiquemos. También deberá existir el campo en el que queremos guardar el valor clave
- * que identifica la línea.
- *
- * @param <b>Command</b> - Texto que permite al servlet identificar que tipo de operación debe realizar
- * o qué botón le ha llamado. <BR>
- * <b>Campo</b> - Un objeto que referencia a un campo del formulario en el que queremos que se
- * deposite el valor clave que identifica a la línea. <BR>
- * <b>Valor</b> - El valor de tipo string que es el valor clave que queremos depositar en el
- * campo anterior. <BR>
- * <b>Depurar</b> - Booleano que indica si se quiere realizar una depuración antes de enviar
- * el formulario. El valor de este campo, por defecto, es false. Si esta opción se pone a true,
- * se deberá implementar una función en la propia página que se llame <b>depurar</b> y en la
- * que realizaremos las depuraciones pertinentes, devolviendo true o false obligatoriamente.
- * Si devolvemos false no se enviará el formulario. Esta función recibe como parámetro el
- * <b>Command</b>. <BR>
- * <b>Formulario</b> - Un objeto que referencia al formulario que queremos enviar. Si este dato
- * se pone null, se entiende que se trata del primer formulario de la página. <BR>
- * <b>newAction</b> - Un string que indica la URL de la página a la que queremos enviar el
- * formulario. Si se deja a null no se cambia la URL que tenga establecido el formulario en
- * su propiedad <b>action</b>. <BR>
- * <b>newTarget</b> - Un string que indica un nombre de una ventana o frame al que queremos
- * enviar el formulario. Se refiere a la propiedad <b>target</b> del formulario. Si esta opción
- * no se indica o se deja a null, se mantiene la que ponga en el formulario. <BR>
- * <b>Comprobar</b> - Booleano que indica si queremos que controle si ya se ha pulsado este
- * botón anteriormente y todavía no ha podido contestar el servidor, evitando que un usuario
- * pueda dar varias veces al mismo botón, creyendo que no le ha dado, porque tarda en responder.
- * El valor por defecto de este parámetro es false.<BR>
- * <b>ComprobarCambios</b> - Booleano que indica si queremos que la función compruebe, previamente,
- * si se han producido cambios de datos en la ventana, presentando en tal caso el mensaje emergente
- * correspondiente.<BR>
- * <b>isCallOut</b> - Booleano que indica si estamos haciendo una llamada a un callout.
- *
- * @return <b>true</b> - si todo va correctamente y se envían los datos.<BR>
- * <b>false</b> - si hay algún problema y los datos no se pueden enviar o pulsa el boton CANCEL de la
- * ventana emergente de comprobación de cambios.
- * @example submitCommandFormParameter("FIND", document.forms[0].inpClave, "12", false, null, null, null, true, false);
- */
- function submitCommandFormParameter(accion, campo, valor, bolDepurar, Formulario, formAction, newTarget, bolComprobar, bolComprobarCambios, isCallOut, controlEvt, evt) {
- if (Formulario == null) Formulario = document.forms[0];
- if (bolDepurar!=null && bolDepurar==true) if (!depurar(accion, Formulario, valor)) return false;
- if (bolComprobarCambios==null) bolComprobarCambios = false;
- if (isCallOut==null) isCallOut = false;
- if (controlEvt==null) controlEvt = false;
- if (controlEvt) {
- if (!evt) evt = window.event;
- var target = (document.layers) ? evt.target : evt.srcElement;
- dispatchEventChange(target);
- }
- if (gWaitingCallOut || (arrGeneralChange!=null && arrGeneralChange.length>0 && bolComprobarCambios)) {
- var strFunction = "submitCommandFormParameter('" + accion + "', " + campo.form.name + "." + campo.name + ", '" + valor + "', " + bolDepurar + ", " + Formulario.name + ", " + ((formAction!=null)?("'" + formAction + "'"):"null") + ", " + ((newTarget!=null)?("'" + newTarget + "'"):"null") + ", " + bolComprobar + ", " + bolComprobarCambios + ", " + isCallOut + ")";
- reloadFunction(strFunction);
- return false;
- }
- if (bolComprobarCambios && !checkForChanges(Formulario)) return false;
- if (confirmar(accion)) {
- campo.value = valor;
- if (formAction != null) Formulario.action = formAction;
- if (newTarget != null) Formulario.target = newTarget;
- submitForm(Formulario.Command, accion, Formulario, bolComprobar, isCallOut);
- }
- return true;
- }
- /**
- * @name campoNumerico
- * @format function campoNumerico(CampoNumerico, Decimales, Negativo)
- * @comment Es la función encargada de controlar que los datos introducidos en un campo sean
- * numéricos, de tal forma que si no lo son, será la propia función la que lance un mensaje
- * de error y posicione el foco en el control. Se nos va a permiter controlar que el número
- * que se haya introducido sea un número entero o no, e incluso que sólo sea positivo o no.
- *
- * @param <b>CampoNumerico</b> - Objeto que referencia el control de la página que queremos depurar.<BR>
- * <b>Decimales</b> - Booleano que indica si se admiten números decimales o no. <BR>
- * <b>Negativos</b> - Booleano que indica si se admiten números negativos o no.
- * @return <b>true</b> - si el contenido del campo es numérico.<BR>
- * <b>false</b> - si no es numérico o no cumple alguno de los requisitos especificados.
- * @example campoNumerico(document.forms[0].inpImporte, true, false);
- * @see @link esNumerico , @link esNumero
- */
- function campoNumerico(CampoNumerico, bolDecimales, bolNegativo)
- {
- if (!esNumero(CampoNumerico.value, bolDecimales, bolNegativo))
- {
- mensaje(4);
- CampoNumerico.focus();
- CampoNumerico.select();
- return false;
- }
- return true;
- }
- /**
- * @name esNumero
- * @format function esNumero(ValorNumerico, Decimales, Negativo)
- * @comment Recorre el texto pasado, controlando si todos sus elementos son numéricos o no
- *
- * @param <b>ValorNumerico</b> - String que contiene el número a depurar.<BR>
- * <b>Decimales</b> - Booleano que indica si se admiten números decimales o no. <BR>
- * <b>Negativos</b> - Booleano que indica si se admiten números negativos o no.
- * @return <b>true</b> - si el contenido del campo es numérico.<BR>
- * <b>false</b> - si no es numérico o no cumple alguno de los requisitos especificados.
- */
- function esNumero(strValorNumerico, bolDecimales, bolNegativo) {
- var bolComa = false;
- var esNegativo = false;
- var i=0;
- if (strValorNumerico == null || strValorNumerico=="") return true;
- if (strValorNumerico.substring(i, i+1)=="-") {
- if (bolNegativo !=null && bolNegativo) {
- esNegativo = true;
- i++;
- } else {
- return false;
- }
- } else if (strValorNumerico.substring(i, i+1)=="+")
- i++;
- var total = strValorNumerico.length;
- for (i=i;i<total;i++) {
- if (isNaN(strValorNumerico.substring(i,i+1))) {
- if (bolDecimales && strValorNumerico.substring(i,i+1)=="." && !bolComa)
- bolComa = true;
- else
- return false;
- }
- }
- return true;
- }
- function getArrayValue(data, name, defaultValue) {
- if (data==null || data.length<=0) return ((defaultValue!=null)?defaultValue:"");
- var total = data.length;
- for (var i=0;i<total;i++) {
- if (data[i][0]==name) return data[i][1];
- }
- return ((defaultValue!=null)?defaultValue:"");
- }
- function addArrayValue(data, name, value, isUrlParameter) {
- if (isUrlParameter==null) isUrlParameter=false;
- if (data==null || data.length<=0) {
- data = new Array();
- data[0] = new Array(name, value, (isUrlParameter?"true":"false"));
- return data;
- }
- var total = data.length;
- for (var i=0;i<total;i++) {
- if (data[i][0]==name) {
- data[i][1] = value;
- return data;
- }
- }
- data[total] = new Array(name, value, (isUrlParameter?"true":"false"));
- return data;
- }
- function addUrlParameters(data) {
- if (data==null || data.length<=0) return "";
- var total = data.length;
- var text = "";
- for (var i=0;i<total;i++) {
- if (data[i][2]=="true") text += ((text!=null && text!="")?"&":"") + data[i][0] + "=" + escape(data[i][1]);
- }
- if (text!=null && text!="") text = "?" + text;
- return text;
- }
- function openNewLink(url, _name, height, width, top, left, checkChanges, target, doSubmit, closeControl, parameters) {
- parameters = addArrayValue(parameters, "location", "1");
- parameters = addArrayValue(parameters, "scrollbars", "1");
- parameters = addArrayValue(parameters, "status", "1");
- parameters = addArrayValue(parameters, "menubar", "1");
- parameters = addArrayValue(parameters, "toolbar", "1");
- parameters = addArrayValue(parameters, "resizable", "1");
- return openPopUp(url, _name, height, width, top, left, checkChanges, target, doSubmit, closeControl, parameters);
- }
- function openPopUp(url, _name, height, width, top, left, checkChanges, target, doSubmit, closeControl, parameters) {
- var adds = "";
- if (height==null) height = screen.height - 50;
- if (width==null) width = screen.width;
- if (top==null) top = (screen.height - height) / 2;
- if (left==null) left = (screen.width - width) / 2;
- if (checkChanges==null) checkChanges = false;
- if (closeControl==null) closeControl = false;
- if (doSubmit==null) doSubmit = false;
- if (checkChanges && !checkForChanges()) return false;
- if (url!=null && url!="") url += addUrlParameters(parameters);
- if (target!=null && target!="" && target.indexOf("_")!=0) {
- var objFrame = eval("parent." + target);
- objFrame.location.href=url;
- return true;
- }
- adds = "height=" + height + ", width=" + width + ", left=" + left + ", top=" + top;
- if (navigator.appName.indexOf("Netscape")) {
- adds += ", alwaysRaised=" + getArrayValue(parameters, "alwaysRaised", "1");
- adds += ", dependent=" + getArrayValue(parameters, "dependent", "1");
- adds += ", directories=" + getArrayValue(parameters, "directories", "0");
- adds += ", hotkeys=" + getArrayValue(parameters, "hotkeys", "0");
- }
- adds += ", location=" + getArrayValue(parameters, "location", "0");
- adds += ", scrollbars=" + getArrayValue(parameters, "scrollbars", "0");
- adds += ", status=" + getArrayValue(parameters, "status", "1");
- adds += ", menubar=" + getArrayValue(parameters, "menubar", "0");
- adds += ", toolbar=" + getArrayValue(parameters, "toolbar", "0");
- adds += ", resizable=" + getArrayValue(parameters, "resizable", "1");
- if (doSubmit && (getArrayValue(parameters, "debug", false)==true)) {
- if (!depurar(getArrayValue(parameters, "Command", "DEFAULT"), null, "")) return false;
- }
- var winPopUp = window.open((doSubmit?"":url), _name, adds);
- if (closeControl) window.onunload = function(){winPopUp.close();}
- if (doSubmit) {
- submitCommandForm(getArrayValue(parameters, "Command", "DEFAULT"), (getArrayValue(parameters, "debug", false)==true), null, url, _name, target, checkChanges);
- }
- winPopUp.focus();
- return winPopUp;
- }
- function abrirNuevoBrowser(url, _name, height, width, top, left) {
- return openNewLink(url, _name, height, width, top, left, null, null, null, true, null);
- }
- function abrirExcel(url, _name, checkChanges) {
- return openPopUp(url, _name, null, null, null, null, checkChanges, null, null, false, null);
- }
- function abrirPDF(url, _name, checkChanges) {
- return openPopUp(url, _name, null, null, null, null, checkChanges, null, null, false, null);
- }
- function abrirPDFFiltered(url, _name, checkChanges) {
- return openPopUp(url, _name, null, null, null, null, checkChanges, null, true, false, null);
- }
- function abrirPopUp(url, _name, height, width, closeControl, showstatus) {
- if (height==null) height = 250;
- if (width==null) width = 230;
- return openPopUp(url, _name, height, width, null, null, null, null, null, closeControl, null);
- }
- function abrirPDFSession(strPagina, strDirectPrinting, strHiddenKey, strHiddenValue, bolComprobarCambios) {
- var direct = (strDirectPrinting!="")?"Y":"N";
- return submitCommandForm("DEFAULT", false, null, "../businessUtility/PrinterReports.html?inppdfpath=" + escape(strPagina) + "&inpdirectprint=" + escape(direct) + "&inphiddenkey=" + escape(strHiddenKey) + ((strHiddenValue!=null)?"&inphiddenvalue=" + escape(strHiddenValue):""), "frameOculto", null, bolComprobarCambios);
- }
- function abrirBusqueda(url, _name, tabId, windowName, windowId, checkChanges) {
- var parameters = new Array();
- parameters = addArrayValue(parameters, "inpTabId", tabId, true);
- parameters = addArrayValue(parameters, "inpWindow", windowName, true);
- parameters = addArrayValue(parameters, "inpWindowId", windowId, true);
- return openPopUp(url, _name, 450, 600, null, null, checkChanges, null, null, true, parameters);
- }
- function openHelp(windowId, url, _name, checkChanges, height, width, windowType, windowName) {
- if (height==null) height = 450;
- if (width==null) width = 700;
- var parameters = new Array();
- parameters = addArrayValue(parameters, "inpwindowId", windowId, true);
- parameters = addArrayValue(parameters, "inpwindowType", windowType, true);
- parameters = addArrayValue(parameters, "inpwindowName", windowName, true);
- return openPopUp(url, _name, height, width, null, null, checkChanges, null, null, true, parameters);
- }
- function openServletNewWindow(Command, depurar, url, _name, processId, checkChanges, height, width, resizable, hasStatus) {
- if (height==null) height = 350;
- if (width==null) width = 500;
- var parameters = new Array();
- parameters = addArrayValue(parameters, "scrollbars", "1");
- parameters = addArrayValue(parameters, "debug", depurar, false);
- if (processId!=null && processId!="") parameters = addArrayValue(parameters, "inpProcessId", processId, true);
- if (Command!=null && Command!="") parameters = addArrayValue(parameters, "Command", Command, false);
- return openPopUp(url, _name, height, width, null, null, checkChanges, null, true, true, parameters);
- }
- function openLink(url, _name, height, width) {
- return openNewLink(url, ((_name.indexOf("_")==0)?"":_name), height, width, null, null, null, ((_name.indexOf("_")==0)?_name:""), false, false, null);
- }
- function editHelp(url, tipo, id, value, height, width) {
- if (height==null) height = 500;
- if (width==null) width = 600;
- var parameters = new Array();
- parameters = addArrayValue(parameters, "Command", tipo, true);
- parameters = addArrayValue(parameters, "inpClave", value, true);
- return openPopUp(url, "HELP_EDIT", height, width, null, null, null, null, false, true, parameters);
- }
- /**
- * @name pulsarTecla
- * @format function pulsarTecla(CodigoTecla)
- * @comment Esta función es interna y es ejecutada por otras funciones que activan el control de
- * eventos en una ventana HTML. Asocian esta función al evento <b>KeyDown</b> de la página,
- * controlando así las pulsaciones de teclas en la página. Esta función se encarga de controlar
- * la pulsación de la tecla <em>ENTER<em>, para ejecutar una acción por defecto.
- *
- * @param <b>CodigoTecla</b> - Es el código ASCII de la tecla que se ha pulsado. Este código lo pasa
- * el propio controlador de eventos, por lo que no tenemos que preocuparnos de él.
- * @return <b>true</b> - en caso de no haber pulsado ninguna de las teclas a controlar.<BR>
- * <b>false</b> - si se ha pulsado alguna de las teclas a controlar.
- */
- function pulsarTecla(CodigoTecla)
- {
- if (gBotonPorDefecto!=null)
- {
- var tecla = (!CodigoTecla) ? window.event.keyCode : CodigoTecla.which;
- if (tecla == 13)
- {
- eval(gBotonPorDefecto);
- return false;
- }
- }
- return true;
- }
- /**
- * @name porDefecto
- * @format function porDefecto(Accion)
- * @comment Esta función se encarga de establecer una <b>Accion</b> por defecto en la página, es decir,
- * la que se ejecutará al pulsar la tecla <em>ENTER</em>.<BR>
- * La <b>Accion</b> se le pasa en formato de texto, pero ha de ser un comando perfectamente
- * ejecutable. No es bueno abusar de esta función, porque se pueden mezclar funciones. <BR>
- * Es importante saber que en las páginas de tipo frame, esta función es común a los frames,
- * por lo que sólo podremos establecer en un frame esta función pero teniendo cuidado de que
- * el usuario no pueda ponerse en otro frame pulsando <em>ENTER</em> porque, en tal caso,
- * se ejecutará este comando igualmente, pudiéndo producirse algún error no deseado.
- *
- * @param <b>Accion</b> - es el comando que se debe ejecutar en caso de pulsar <em>ENTER</em>.
- * @example porDefecto("alert('Hola')");
- */
- function porDefecto(accion)
- {
- gBotonPorDefecto = accion;
- if (!document.all)
- {
- document.captureEvents(Event.KEYDOWN);
- }
- document.onkeydown=pulsarTecla;
- return true;
- }
- /**
- * @name Teclas
- * @format function Teclas(tecla, evento, campo, teclaAuxiliar)
- * @comment Esta función sirve para ir formando el array de teclas para cada pantalla.<BR>
- * Cada tecla que queremos utilizar debe contener esta estrtuctura.
- *
- * @param <b>tecla</b> - es la tecla que se debe pulsar en formato texto. No diferencia entre
- * mayúsculas y minúsculas.<BR>
- * <b>evento</b> - Se trata de la acción que queremos que se ejecute cuando se pulse
- * dicha tecla. Se le debe pasar el código a ejecutar como si fuese un
- * strring.<BR>
- * <b>campo</b> - Se indica aquí el nombre de un campo de la ventana. Sirve para decir
- * que el evento se deverá ejecutar sólo si nos encontramos en ese campo.
- * Si este parámetro se deja null, estamos indicando que se trata de un evento
- * global, es decir, para toda la ventana.
- * <b>teclaAuxiliar</b> - Sus valores serán, <em>CTRL</em>, <em>ALT</em> ó <em>null</em>,
- * donde <em>CTRL</em> indica que se debe pulsar CONTROL a la que
- * la tecla que se ha especificado, <em>ALT</em> indica que se debe
- * pulsar ALTERNATIVA a la vez que la tecla indicada y <em>null</em>
- * indica que no se debe pulsar ninguna tecla a la vez.
- * @example Teclas("A", "alert('Hola')", "inpcBpartnerId_D", null);
- */
- function Teclas(tecla, evento, campo, teclaAuxiliar) {
- this.tecla = tecla;
- this.evento = evento;
- this.campo = campo;
- this.teclaAuxiliar = teclaAuxiliar;
- }
- /**
- * @name obtenerCodigoTecla
- * @format function obtenerCodigoTecla(codigo)
- * @comment Se trata de una función interna que devuelve el código de la tecla que corresponde
- * a la letra pasada.
- *
- * @param <b>codigo</b> - Es el texto que corresponde a la letra de la que queremos obtener su
- * codigo de tecla.
- * @return el código de la tecla de la letra pasada.
- * @example obtenerCodigoTecla("A");
- */
- function obtenerCodigoTecla(codigo) {
- if (codigo==null) return 0;
- else if (codigo.length==1) return codigo.toUpperCase().charCodeAt(0);
- switch (codigo.toUpperCase()) {
- case "BACKSPACE": return 8;
- case "TAB": return 9;
- case "ENTER": return 13;
- case "SPACE": return 32;
- case "DELETE": return 46;
- case "INSERT": return 45;
- case "END": return 35;
- case "HOME": return 36;
- case "REPAGE": return 33;
- case "AVPAGE": return 34;
- case "LEFTARROW": return 37;
- case "RIGHTARROW": return 39;
- case "UPARROW": return 38;
- case "DOWNARROW": return 40;
- case "NEGATIVE": return 189;
- case "NUMBERNEGATIVE": return 109;
- case "DECIMAL": return 190;
- case "NUMBERDECIMAL": return 110;
- case "ESCAPE": return 27;
- case "F1": return 112;
- case "F2": return 113;
- case "F3": return 114;
- case "F4": return 115;
- case "F5": return 116;
- case "F6": return 117;
- case "F7": return 118;
- case "F8": return 119;
- case "F9": return 120;
- case "F10": return 121;
- case "F11": return 122;
- case "F12": return 123;
- case "P": return 80;
- /* case "shiftKey": return 16;
- case "ctrlKey": return 17;
- case "altKey": return 18;*/
- default: return 0;
- }
- }
- /**
- * @name controlTecla
- * @format function controlTecla(CodigoTecla)
- * @comment Se encarga de controlar la pulsación de teclas en una página, comprobando que
- * no se pulse ninguna de las teclas especificadas en el array global arrTeclas, en
- * cuyo caso procede a ejecutar la acción asociada a dicha tecla en dicho array.
- *
- * @param <b>CodigoTecla</b> - Es el código de la tecla pulsada por el usuario.
- * @return <b>true</b> - en caso de no pulsarse ninguna de las teclas del array.<BR>
- * <b>false</b> - en caso de pulsarse una tecla del array arrTeclas.
- */
- function controlTecla(CodigoTecla) {
- if (arrTeclas==null || arrTeclas.length==0) return true;
- if (!CodigoTecla) CodigoTecla = window.event;
- var tecla = window.event ? CodigoTecla.keyCode : CodigoTecla.which;
- var target = (CodigoTecla.target?CodigoTecla.target: CodigoTecla.srcElement);
- //var target = (document.layers) ? CodigoTecla.target : CodigoTecla.srcElement;
- var total = arrTeclas.length;
- for (var i=0;i<total;i++) {
- if (arrTeclas[i]!=null && arrTeclas[i]) {
- if (tecla == obtenerCodigoTecla(arrTeclas[i].tecla)) {
- if (arrTeclas[i].teclaAuxiliar==null || arrTeclas[i].teclaAuxiliar=="" || arrTeclas[i].teclaAuxiliar=="null") {
- if (arrTeclas[i].campo==null || (target!=null && target.name!=null && isIdenticalField(arrTeclas[i].campo, target.name))) {
- var eventoTrl = replaceEventString(arrTeclas[i].evento, target.name, arrTeclas[i].campo);
- eval(eventoTrl);
- return false;
- }
- } else if (arrTeclas[i].campo==null || (target!=null && target.name!=null && isIdenticalField(arrTeclas[i].campo, target.name))) {
- if (arrTeclas[i].teclaAuxiliar=="ctrlKey" && CodigoTecla.ctrlKey && !CodigoTecla.altKey && !CodigoTecla.shiftKey) {
- var eventoTrl = replaceEventString(arrTeclas[i].evento, target.name, arrTeclas[i].campo);
- eval(eventoTrl);
- return false;
- } else if (arrTeclas[i].teclaAuxiliar=="altKey" && !CodigoTecla.ctrlKey && CodigoTecla.altKey && !CodigoTecla.shiftKey) {
- var eventoTrl = replaceEventString(arrTeclas[i].evento, target.name, arrTeclas[i].campo);
- eval(eventoTrl);
- return false;
- } else if (arrTeclas[i].teclaAuxiliar=="shiftKey" && !CodigoTecla.ctrlKey && !CodigoTecla.altKey && CodigoTecla.shiftKey) {
- var eventoTrl = replaceEventString(arrTeclas[i].evento, target.name, arrTeclas[i].campo);
- eval(eventoTrl);
- return false;
- }
- }
- }
- }
- }
- return true;
- }
- function isIdenticalField(nombreArray, nombreActual) {
- if (nombreArray.substring(nombreArray.length-1)=="%") return (nombreActual.indexOf(nombreArray.substring(0, nombreArray.length-1))==0);
- else return (nombreArray == nombreActual);
- }
- function replaceEventString(eventoJS, inputname, arrayName) {
- eventoJS = ReplaceText(eventoJS, "@inputname@", inputname);
- if (arrayName!=null && arrayName!="" && arrayName.substring(arrayName.length-1)=="%") {
- var endname = inputname.substring(arrayName.length-1);
- eventoJS = ReplaceText(eventoJS, "@endinputname@", endname);
- }
- return eventoJS;
- }
- /**
- * @name activarControlTeclas
- * @format function activarControlTeclas()
- * @comment Es la encargada de activar el controlador de pulsación de teclas para la página.<BR>
- * Esta función se deberá activar tras haber definido el array de teclas global en dicha
- * página, es decir, <em>arrTeclas</em>.
- *
- * @example onLoad="activarControlTeclas();"
- */
- function activarControlTeclas() {
- if (arrTeclas==null || arrTeclas.length==0) return true;
- var agt=navigator.userAgent.toLowerCase();
- /* if (agt.indexOf('gecko') != -1) {
- document.releaseEvents(Event.KEYDOWN);
- }
- if (agt.indexOf('gecko') != -1)
- document.captureEvents(Event.KEYDOWN);*/
-
- document.onkeydown=controlTecla;
- return true;
- }
- /**
- * @name rellenarComboHijo
- * @format function rellenarComboHijo(combo, arrayDatos, padre, Selected, sinBlanco)
- * @comment Esta función se encarga de rellenar un combo de datos, a partir de un array que se le pasa,
- * buscando los elementos que contengan la clave padre indicada.
- *
- * @param <b>combo</b> - Es un objeto que identifica el combo a rellenar.<BR>
- * <b>arrayDatos</b> - Es un array con los datos que compondrán el combo. Este array debe estar
- * compuesto por los siguientes campos en orden:<BR>
- * <ol>
- * <li>Campo clave que representa el padre o elemento de agrupación de datos</li>
- * <li>Clave de cada elemento</li>
- * <li>Texto a presentar en el combo para cada elemento</li>
- * <li>Booleano que indica si se debe seleccionar o no</li>
- * </ol>.<BR>
- * <b>padre</b> - Es la clave del padre para buscar los elementos comunes a presentar.<BR>
- * <b>Selected</b> - Booleano que indica si se debe contemplar el último campo del array para seleccionar
- * elementos dentro del nuevo array. Si este campo es null o false, no es necesario
- * implementar el último elemento del array de datos.<BR>
- * <b>sinBlanco</b> - Booleano que indica si se debe añadir o no un elemento en blanco. Para los combos
- * en los que se puede no elegir ningún elemento. Por defecto es false.
- *
- * @return Devuelve <b>true</b> si todo va bien y, si no, devuelve <b>false</b>.
- * @example rellenarComboHijo(document.frmMain.inpCombo, arrDatos, '12', true, true);
- */
- function rellenarComboHijo(combo, arrayDatos, padre, bolSelected, sinBlanco) {
- var i, value="";
- for (i = combo.options.length;i>=0;i--)
- combo.options[i] = null;
- i=0;
- if (sinBlanco==null || !sinBlanco)
- combo.options[i++] = new Option("", "");
- if (arrayDatos==null) return false;
- var total = arrayDatos.length;
- for (var j=0;j<total;j++) {
- if (arrayDatos[j][0]==padre) {
- combo.options[i] = new Option(arrayDatos[j][2], arrayDatos[j][1]);
- if (bolSelected!=null && bolSelected && arrayDatos[j][3]=="true") {
- value = arrayDatos[j][1];
- combo.options[i].selected = true;
- }
- else combo.options[i].selected = false;
- i++;
- }
- }
- return value;
- }
- /**
- * @name layer
- * @format function layer(Span, Texto, esId)
- * @comment Esta función permite introducir un texto en objeto span, div o layer. Su finalidad es la
- * de poder cambiar texto en una página HTML de forma dinámica sin que el texto deba estar en
- * un campo de formulario.
- *
- * @param <b>Span</b> - Objeto que referencia a un span, div o layer de la página o el id de uno de
- * esos objetos que exista en la página. <BR>
- * <b>Texto</b> - Texto que queremos que ponga en el span, div o layer. Si ponemos "", entonces,
- * lo deja vacío. <BR>
- * <b>esID</b> - Booleano que indica a la función si el primer parámetro que se le ha pasado es
- * el id (true) o el objeto (false).
- * @example layer("idSpan", "HOLA", true);
- */
- function layer(nodo, strTexto, esId, isAppend)
- {
- if (strTexto==null)
- strTexto = "";
- if (isAppend==null) isAppend=false;
- if (document.layers)
- {
- if (esId!=null && esId)
- nodo = document.layers[nodo];
- if (nodo==null) return;
- nodo.document.write(strTexto);
- nodo.document.close();
- }
- else if (document.all)
- {
- if (esId!=null && esId)
- nodo = document.all[nodo];
- if (nodo==null) return;
- //nodo.innerHTML = '';
- try {
- if (isAppend) {
- strTexto = ((nodo.innerHTML==null)?"":nodo.innerHTML) + strTexto;
- isAppend = false;
- }
- nodo.innerHTML = strTexto;
- } catch (e) {
- if (isAppend) {
- strTexto = ((nodo.outterHTML==null)?"":nodo.outterHTML) + strTexto;
- isAppend = false;
- }
- nodo.outterHTML = strTexto;
- }
- nodo=null;
- }
- else if (document.getElementById)
- {
- if (esId!=null && esId)
- nodo = document.getElementById(nodo);
- if (nodo==null) return;
- var range = document.createRange();
- range.setStartBefore(nodo);
- var domfrag = range.createContextualFragment(strTexto);
- while (nodo.hasChildNodes())
- {
- nodo.removeChild(nodo.lastChild);
- }
- nodo.appendChild(domfrag);
- nodo=null;
- }
- }
- function readLayer(nodo, esId) {
- if (document.layers) {
- if (esId!=null && esId) nodo = document.layers[nodo];
- if (nodo==null) return "";
- return getChildText(nodo);
- } else if (document.all) {
- if (esId!=null && esId) nodo = document.all[nodo];
- if (nodo==null) return "";
- try {
- return nodo.innerHTML;
- } catch (e) {
- return nodo.outterHTML;
- }
- } else if (document.getElementById) {
- if (esId!=null && esId) nodo = document.getElementById(nodo);
- if (nodo==null) return "";
- return getChildText(nodo);
- }
- return "";
- }
- function getChildText(nodo) {
- if (nodo==null) return "";
- if (nodo.data) return nodo.data;
- else return getChildText(nodo.firstChild);
- }
- /**
- * @name rellenarCombo
- * @format function rellenarCombo(Combo, ArrayDatos, Selected, sinBlanco)
- * @comment Rellena un <b>Combo</b> con los valores del <b>ArrayDatos</b>. Admite que se ponga un
- * valor seleccionado en el <b>Combo</b>, que será el que se indique como tal en el
- * <b>ArrayDatos</b>.
- *
- * @param <b>Combo</b> - referencia a un objeto del tipo combo, que es el que queremos rellenar con
- * los valores del <b>ArrayDatos</b>. <BR>
- * <b>ArrayDatos</b> - es un Array que contiene los valores que queremos que aparezcan en el
- * <b>Combo</b>. Su formato es (value, texto, selected), donde <em>valor</em> es el value que
- * tendrá en <b>Combo</b>, <em>texto</em> es el texto que se verá en la lista desplegable y
- * <em>selected</em> es un campo que tendrá el valor <strong>true</strong> o
- * <strong>false</strong>, dependiendo de si queremos que ese registro aparezca…
Large files files are truncated, but you can click here to view the full file