// ===================================================================================
// Funciones JavaScript DHTML para creación dinámica de tablas
//
// Necesita: dhtml.js
// ===================================================================================

// Cambia el texto de la celda situada en la fila con id=id_fila y la columna índice_columna (primera = 0)
function cambiar_texto_celda(id_fila, indice_columna, nuevo_texto)
{
	var fila = obtenerObjeto(id_fila);
	if (fila) {
		var celda = fila.getElementsByTagName('td').item(indice_columna);
		if (celda) {
			celda.childNodes[0].data = nuevo_texto;
		}
	}
}

// Añadir el texto u objeto "contenido" al elemento "elemento"
function anadir_a_elemento(elemento, contenido) {
	if (typeof contenido == 'string') {
		texto = document.createTextNode(contenido);
		elemento.appendChild(texto);
	} else {
		elemento.appendChild(contenido);
	}
}

// Crea una nueva fila, añadiéndola a cuerpo_tabla si cuerpo_tabla != null; se devuelve como valor de retorno.
// Si se especifican, se fija id = identificador, className = nombre_clase y style = estilo.
function nueva_fila(cuerpo_tabla, identificador, nombre_clase, estilo)
{
	var elemento = document.createElement('tr');
	if (identificador != null) {
		elemento.id = identificador;
	}
	if (nombre_clase != null) {
		elemento.className = nombre_clase;
	}
	if (estilo != null) {
		elemento.style = estilo;
	}
	if (cuerpo_tabla != null) {
		cuerpo_tabla.appendChild(elemento);
	}
	return elemento;
}

// Crea una nueva celda, añadiéndola a fila, o si fila == null devolviéndola como valor de retorno.
// Si se especifican, se fija align = alineacion, colspan = columnas, className = nombre_clase y style = estilo.
function nueva_celda(fila, contenido, alineacion, columnas, nombre_clase, estilo)
{
	var elemento = document.createElement('td');
	if (alineacion != null) {
		elemento.align = alineacion;
	}
	if (columnas != null) {
		elemento.colSpan = columnas;
	}
	if (nombre_clase != null) {
		elemento.className = nombre_clase;
	}
	if (estilo != null) {
		elemento.style = estilo;
	}
	if (typeof contenido == 'string') {
		texto = document.createTextNode(contenido);
		elemento.appendChild(texto);
	} else {
		elemento.appendChild(contenido);
	}
	if (fila != null) {
		fila.appendChild(elemento);
	}
	return elemento;
}

// Crea un nuevo elemento input, añadiéndolo a padre, o si padre == null devolviéndolo como valor de retorno.
// Se debe especificar tipo ('text', 'hidden'...), nombre y valor.
// Si se especifican, se fija className = nombre_clase, style = estilo, onchange = funcion_onchange y onclick = funcion_onclick.
function nuevo_input(padre, tipo, nombre, valor, nombre_clase, estilo, funcion_onchange, funcion_onclick, long_max)
{
	var elemento = document.createElement('input');
	elemento.type = tipo;
	elemento.name = nombre;
	elemento.value = valor;
	if (long_max != null && long_max != undefined) {
		elemento.maxLength = long_max;
	}
	if (nombre_clase != null) {
		elemento.className = nombre_clase;
	}
	if (estilo != null) {
		elemento.style = estilo;
	}
	if (funcion_onchange != null) {
		elemento.onchange = funcion_onchange;
	}
	if (funcion_onclick != null) {
		elemento.onclick = funcion_onclick;
	}
	if (padre != null) {
		padre.appendChild(elemento);
	}
	return elemento;
}

// Crea un nuevo elemento select, añadiéndolo a padre, o si padre == null devolviéndolo como valor de retorno.
// Se debe especificar nombre y contenido = array(valor:texto); y opcionalmente, valor_seleccionado.
// Si se especifican, se fija className = nombre_clase, style = estilo, onchange = funcion_onchange.
function nuevo_select(padre, nombre, contenido, valor_seleccionado, nombre_clase, estilo, funcion_onchange)
{
	elemento = document.createElement('select');
	elemento.name = nombre;
	if (nombre_clase != null) {
		elemento.className = nombre_clase;
	}
	if (estilo != null) {
		elemento.style = estilo;
	}
	if (funcion_onchange != null) {
		elemento.onchange = funcion_onchange;
	}
	for (var valor in contenido) {
		var opcion = document.createElement('option');
		opcion.value = valor;
		if (valor == valor_seleccionado) {
			opcion.defaultSelected = true;
		}
		var texto_opcion = document.createTextNode(contenido[valor]);
		opcion.appendChild(texto_opcion);
		elemento.appendChild(opcion);
	}
	if (padre != null) {
		padre.appendChild(elemento);
	}
	return elemento;
}

// Crea una nueva imagen, añadiéndola a padre, o si padre == null devolviéndola como valor de retorno.
// Se debe especificar el origen de la imagen ( = src).
// Si se especifican, se fija id = identificador, style = estilo  y onclick = funcion_onclick.
function nueva_img(padre, origen, identificador, estilo, funcion_onclick)
{
	var elemento = document.createElement('img');
	elemento.src = origen;
	if (identificador != null) {
		elemento.id = identificador;
	}
	if (estilo != null) {
		elemento.style = estilo;
	}
	if (funcion_onclick != null) {
		elemento.onclick = funcion_onclick;
	}
	if (padre != null) {
		padre.appendChild(elemento);
	}
	return elemento;
}

