/********************************************************
 *      Biblioteca de Funciones de Manejo de Objetos con*
 *      parámetro principal como Objeto, Versión 1.3    *
 *      Autor:           Hernán Mallea Soto             *
 *      Versión 1.3.1:   27 - Jun - 2006                *
 *        Mejora función de entrega de índice del ele_  *
 *        mento chequeado en un Radio Button            *
 *      Versión 1.3:     28 - Sep - 2005                *
 *        Agrega función de selección de Objeto Radio   *
 *        según valor                                   *
 *      Versión 1.2:     11 - Jul - 2005                *
 *        Agrega funciones de inserción de elementos a  *
 *        objeto Select según criterio                  *
 *      Versión 1.1.1:   08 - Feb - 2001                *
 *      Versión 1.1:     20 - Oct - 2000                *
 *      Versión 1.0:     25 - Nov - 1999                *
 ********************************************************/

/*	Entrega el índice del elemento seleccionado en un Objeto Select
	con parámetro principal como Objeto.	*/
function Obj_Selec(Obj) {
//	Obj: 	Objeto a analizar
	var numero=-1

	for (var i=0; i < Obj.length; i++) {
		if (Obj.options[i].selected)
			numero = i
	}
	return numero
}

/*	Entrega el índice del elemento chequeado en un Objeto Radio
	con parámetro principal como Objeto.	*/
function Obj_Check(Obj) {
//	Obj: 	Objeto a analizar
	var numero=-1

	if (Obj.length != null) {
		for (var i=0; i < Obj.length; i++) {
			if (Obj[i].checked)
				numero = i;
		}
	} else {
		if (Obj.checked)
			numero = 0;
	}
	return numero
}

/*	Selecciona un elemento de un Objeto Select según un valor patrón,
	utilizando como parámetro principal el Objeto.
	Si no hay coincidencia, se selecciona el primer elemento.	*/
function Selec_Obj_Valor(Obj, strvalor) {
//	Obj:		Objeto a seleccionar elemento
//	strvalor:	Valor string que es patrón en la selección
	var ind = 0;
	var intLenObj = Obj.length;

	if (intLenObj == 0)
		return;
		
	while (Obj.options[ind].value != strvalor) {
		ind++;
		if (ind == intLenObj) {
			ind = 0;
			break;
		}
	}
	Obj.options[ind].selected = true;
}

/*	Selecciona un elemento de un Objeto Radio según un valor patrón,
	utilizando como parámetro principal el Objeto.
	Si no hay coincidencia, se mantiene la selección previa.	*/
function Check_Obj_Valor(Obj, strvalor) {
//	Obj:		Objeto a seleccionar elemento
//	strvalor:	Valor string que es patrón en la selección
	var ind = 0;
	var intLenObj = Obj.length;

	if (intLenObj == 0)
		return;
		
	while (Obj[ind].value != strvalor) {
		ind++;
		if (ind == intLenObj) {
			ind = -1;
			break;
		}
	}
	if (ind >= 0)
		Obj[ind].checked = true;
}

/*	Elimina todos los elementos de un Objeto Select utilizando como 
	parámetro principal el Objeto.	*/
function Selec_Obj_Limpia(Obj) {
//	Obj:		Objeto a limpiar de sus elementos
	var intLenObj = Obj.options.length;
	
	for (var i=0; i <= intLenObj; i++) {
		Obj.options[intLenObj - i] = null;
	}
}

/*	Carga un Objeto Select con elementos de acuerdo a criterio utilizando
	como parámetro principal el Objeto.		*/
function Selec_Obj_Carga(Obj, arrCodigo, arrNombre, arrRelacion, strValor, lngValorDefecto) {
//	Obj:			Objeto Select a insertar valores
//	arrCodigo:		arreglo de Códigos
//	arrNombre:		arreglo de Nombres o Textos
//	arrRelacion:	arreglo de relaciones para inserción cumpliendo el criterio
//	strValor:		criterio de búsqueda para la inserción de elementos
	var lngLargoCodigo = arrCodigo.length;
	var lngLargoNombre = arrNombre.length;
	var lngLargoRelacion = arrRelacion.length;
	var idx;
	
	Selec_Obj_Limpia(Obj);

	if (lngLargoCodigo != lngLargoNombre || lngLargoCodigo != lngLargoRelacion) {
		return;
	}

	if (strValor != "") {
		if (lngValorDefecto >= 0) 
			Obj.options[Obj.options.length] = new Option(arrNombre[lngValorDefecto], arrCodigo[lngValorDefecto]);
			
		for (idx = 0; idx < lngLargoRelacion; idx++) {
			if (arrRelacion[idx].indexOf(',' + strValor + ',') >= 0)
				Obj.options[Obj.options.length] = new Option(arrNombre[idx], arrCodigo[idx]);
		}
	} else {
		for (idx = 0; idx < lngLargoRelacion; idx++)
			Obj.options[Obj.options.length] = new Option(arrNombre[idx], arrCodigo[idx]);
	}
}
