/*****************************************************************************************

	Funciones para el manejo de Combos en HTML
	(C) Alberto Blanco    julio 2008

*****************************************************************************************/

/***************************************************************************************************************
Rellena un combo con la lista que se pasa
	 
Combo una referencia al objeto combo
Lista tiene el formato vvv$ttttttt|vvvv$ttttttt|vvvv$ttttttt ... 
donde vvv es el valor y tttt el texto para cada elemento

Deja seleccionado el primer elemento
***************************************************************************************************************/
function COMBORellena(Combo,Lista)
{
var tmp;
var datos=Lista.split("|");	//Separo la lista en elementos del tipo valor|texto
	


	Combo.length=datos.length;	//Asignamos al combo los mismos elementos que la lista
	for (var j=0;j<datos.length;j++) //Nos buclamos para actualizar los elementos
		{
		tmp=datos[j].split('$');	//Desgloso valor y texto
		Combo.options[j].value=tmp[0]; //Los actualizo
		Combo.options[j].text=tmp[1];
		};
		
	Combo.selectedIndex=0; //Seleccionamos el primer elemento
};

/***************************************************************************************************************
Rellena un combo, ordenando la lista que se pasa
	 
Combo una referencia al objeto combo
Lista tiene el formato vvv$ttttttt|vvvv$ttttttt|vvvv$ttttttt ... 
donde vvv es el valor y tttt el texto para cada elemento

Deja seleccionado el primer elemento
***************************************************************************************************************/
function COMBORellenaOrdenado(Combo,Lista)
{
var tmp;
var datos=Lista.split("|");	//Separo la lista en elementos del tipo valor|texto
var codigos=new Array();
var descripciones=new Array();
var flag,j;

	//Paso los datos a dos matrices
	for (j=0;j<datos.length;j++)
		{
		tmp=datos[j].split('$');	//Desgloso valor y texto
		codigos[j]=tmp[0];
		descripciones[j]=tmp[1];
		};

	//Ordeno
	do
		{
		flag=false;
		for (j=0;j<(datos.length-1);j++)
			if (descripciones[j]>descripciones[j+1])
				{
				flag=true;
				
				tmp=descripciones[j+1];
				descripciones[j+1]=descripciones[j];
				descripciones[j]=tmp;
				
				tmp=codigos[j+1];				
				codigos[j+1]=codigos[j];
				codigos[j]=tmp;
				};
		}
	while (flag);


	Combo.length=codigos.length;	//Asignamos al combo los mismos elementos que la lista
	for (j=0;j<codigos.length;j++) //Nos buclamos para actualizar los elementos
		{
		Combo.options[j].value=codigos[j]; //Los actualizo
		Combo.options[j].text=descripciones[j];
		};
		
	Combo.selectedIndex=0; //Seleccionamos el primer elemento
};


/***************************************************************************************************************
Busca el value dentro del compbo que coincida con Valor y seleciona ese elemento.
Si no lo encuentra selecciona el primero
Combo una referencia al objeto combo
***************************************************************************************************************/
function COMBOSelValue(Combo,Valor)
{
var flag=true;

	for (var j=0;j<Combo.length;j++) //Nos buclamos para buscar el value
		{
		if (Combo.options[j].value==Valor)
			{
			flag=false;
			Combo.selectedIndex=j;
			break;
			};
		};

	if (flag) Combo.selectedIndex=0; //Seleccionamos el primer elemento en caso de no haber encontrado Valor
};

/***************************************************************************************************************
Busca el value dentro del combo que coincida con Valor y devuelve la descripcion
Si no lo encuentra devuelve ''
Combo una referencia al objeto combo
***************************************************************************************************************/
function COMBODameDescri(Combo,Valor)
{
var flag=true;

	for (var j=0;j<Combo.length;j++) //Nos buclamos para buscar el value
		{
		if (Combo.options[j].value==Valor)
			{
			flag=false;
			return Combo.options[j].text;
			};
		};
	return '';
};
