/********************************************************
 *      Biblioteca de Funciones de Manejo de Objetos con*
 *      parámetro principal como Objeto, Versión 1.4    *
 *      Autor:           Hernán Mallea Soto             *
 *      Versión 1.4:     17 - Dic - 2009                *
 *        Agrega función para la propiedad disabled de  *
 *        Objeto Radio                                  *
 *      Versión 1.3.2:   01 - Oct - 2008                *
 *        Mejora función de selección de elemento en un *
 *        Radio Button (considerando largo 1            *
 *      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;
	
	if (intLenObj > 1) {
		while (Obj[ind].value != strvalor) {
			ind++;
			if (ind == intLenObj) {
				ind = -1;
				break;
			}
		}
		if (ind >= 0)
			Obj[ind].checked = true;
	} else {
		if (Obj.value == strvalor)
			Obj.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]);
	}
}

/*	Cambia la propiedad disabled de un Objeto Radio
	con parámetro principal como Objeto.	*/
function Radio_Disabled(Obj, bolValor) {
//	Obj: 		Objeto a procesar
//	bolValor: 	Valor booleano

	if (Obj.length != null) {
		for (var i=0; i < Obj.length; i++) {
			Obj[i].disabled = bolValor;
		}
	} else {
		Obj.disabled = bolValor;
	}
	return true;
}

