
	// Devuelve un Array de estructura tipo ListaXRedefinida cuyo padre es el iIdPadre.
	function StructLlistaSelFills(estructuraLlista,iIdPadre){
		var resultado= new Array();
		var x=0;
		for (var i=0; i < estructuraLlista.length; i++){
			if (estructuraLlista[i]["iidpare"]==iIdPadre)
			{
				resultado[x]=new Object();
				resultado[x]["iidllistabase"]=estructuraLlista[i]["iidllistabase"];
				resultado[x]["snom"]=estructuraLlista[i]["snom"];
				resultado[x]["iidpare"]=estructuraLlista[i]["iidpare"];
				x++;
			}
		}
		return resultado;
	}

	// Devuelve una estructura tipo ListaXRedefinida que es el padre del elemento es iID.
	function StructLlistaSelPare(estructuraLlista, estructuraLlistaFill, iId)	{
		for(var i=0; i < estructuraLlistaFill.length; i++)		{
			if ( estructuraLlistaFill[i]["iidllistabase"] == iId )
				break;
		}
		iId = estructuraLlistaFill[i]["iidpare"];
		for (i=0; i < estructuraLlista.length; i++)		{
			if (parseInt(estructuraLlista[i]["iidllistabase"])==parseInt(iId))
			{
				var resultado=new Object();
				resultado["iidllistabase"]=estructuraLlista[i]["iidllistabase"];
				resultado["snom"]=estructuraLlista[i]["snom"];
				resultado["snombase"]=estructuraLlista[i]["snombase"];
				return resultado;
			}
		}
		return(true);
	}
	// Rellena un objeto lista a partir de una estructura.
	function LlistaAddStructLlista(oLlista,estructuraLlista) {
		for (var i=0; i < estructuraLlista.length; i++){
			oLlista.options.add(new Option(estructuraLlista[i]["snom"],estructuraLlista[i]["iidllistabase"]));
		}
	}
	// Anyadir un nuevo item a una objeto lista pasando el id y valor.
	function LlistaAddItem(oLlista,iIdItem,sValor) {
		oLlista.options.add(new Option(iIdItem,sValor));
	}
	// Eliminar un item a partir del id.
	function LlistaDelItem(oLlista,iIdItem) {
		for(var x = 0; x < oLlista.length; x++){
			if (oLlista.options[x].value==iIdItem)
				oLlista.options[x] = null;
		}
		return(true);
	}
	// Selecciona de un objeto lista el item o items que le pasemos
	function LlistaSelItem(oLlista, selec)	{
		var selecciones=new String(selec);
		var lista = selecciones.split(",");
		p=oLlista.options;
		for (i=0; i<p.length; i++)	{
			for (x=0; x<lista.length; x++)	{
				if (p[i].value==lista[x])		{
					p[i].selected=true;
					break;
				}
			}
		}
		return(false);
	}
	// Anyade el item seleccionado de la lista origen a la lista destino
	function LlistaAddLlistaItem(oLlistaOrigen,oLlistaDestino)	{
		var bInsertar;
		for (var iLlistaAddLlistaItem = 0; iLlistaAddLlistaItem < oLlistaOrigen.length; iLlistaAddLlistaItem++)	{
			if (oLlistaOrigen[iLlistaAddLlistaItem].selected)	{
				// Persuposem que l'hem d'insertar
				bInsertar = true;
				// Comprovem que l'item a insertar no estigui al desti
				for (var iRepetit = 0; iRepetit < oLlistaDestino.length; iRepetit++)
					if (oLlistaDestino[iRepetit].value == oLlistaOrigen[iLlistaAddLlistaItem].value)
						bInsertar = false;
				// Si no hem trobat l'item al desti
				if (bInsertar)
					oLlistaDestino[oLlistaDestino.length] = new Option (oLlistaOrigen[iLlistaAddLlistaItem].text,oLlistaOrigen[iLlistaAddLlistaItem].value);
			}
		}
		return(true);
	}
	//Elimina el item seleccionado d'una llista
	function LlistaDelSelectedItem(oLlista) {
		for(var i = (oLlista.options.length-1); i >= 0; i--)
			if ((oLlista.options[i] != null) && (oLlista.options[i].selected == true))
				oLlista.options[i] = null;
		return(true);
	}
	//Seleccionar todos los elementos de la llista
	function LlistaSelAll(oLlista){
		for(var i = 0; i < oLlista.length; i++)
			oLlista.options[i].selected=true;
	}
	//Deseleccionar todos los elementos de la llista
	function LlistaDeselAll(oLlista){
		for(var i = 0; i < oLlista.length; i++)
			oLlista.options[i].selected=false;
	}
	//Elimina todos los items de una llista
	function LlistaDelAllItems(oLlista) {
		for(var i = (oLlista.options.length-1); i >= 0; i--)
				oLlista.options[i] = null;
		return(true);
	}
	//Devuelve el numero de elementos seleccionados que tiene un objeto lista
	function LlistaCountSelectedItems(oLlista){
		var num=0;
		for (var i=0; i < oLlista.length; i++){
			if ((oLlista.options[i].selected) && (oLlista.options[i].value > 0))
				num+=1;
		}
		return(num);
	}
	//Puja els items seleccionats d'una llista una posicio amunt
	function LlistaPujaItems(oLlista) {
		if (LlistaCountSelectedItems(oLlista) > 0) {
			var bHiHaPosicioLliure;
			for (var iLlista = 1; iLlista < oLlista.length; iLlista++)
				if (oLlista[iLlista].selected)	{
					// Comprovem que hi hagi una posicio sense seleccionar per pujar
					bHiHaPosicioLliure = false;
					for (var iPosicioLliure = iLlista; iPosicioLliure > -1; iPosicioLliure--)
						if (!oLlista[iPosicioLliure].selected)
							bHiHaPosicioLliure = true;
					if (bHiHaPosicioLliure)	{
						// Si l'element anterior esta seleccionat primer movem aquest (crida recursiva)
						var sText = oLlista[iLlista-1].text;
						var xValor = oLlista[iLlista-1].value;
						oLlista[iLlista-1].text = oLlista[iLlista].text;
						oLlista[iLlista-1].value = oLlista[iLlista].value;
						oLlista[iLlista].text = sText;
						oLlista[iLlista].value = xValor;
						//Canviem la seleccio juntament amb la posicio de l'item
						oLlista[iLlista].selected = false;
						oLlista[iLlista-1].selected = true;
					}
				}
		}
	}
	//Baixa els items seleccionats d'una llista una posicio avall
	function LlistaBaixaItems(oLlista){
		if (LlistaCountSelectedItems(oLlista) > 0)	{
			var bHiHaPosicioLliure;
			for (var iLlista = oLlista.length-1; iLlista > -1 ; iLlista--){
				if (oLlista[iLlista].selected && iLlista < oLlista.length - 1){
					//Comprovem que hi hagi alguna posicio no seleccionada per baixar
					bHiHaPosicioLliure = false;
					for (var iSeleccionats = iLlista; iSeleccionats < oLlista.length; iSeleccionats++)
						if (!oLlista[iSeleccionats].selected)
							bHiHaPosicioLliure = true;
					if (bHiHaPosicioLliure)	{
						var sText = oLlista[iLlista+1].text;
						var xValor = oLlista[iLlista+1].value;
						oLlista[iLlista+1].text = oLlista[iLlista].text;
						oLlista[iLlista+1].value = oLlista[iLlista].value;
						oLlista[iLlista].text = sText;
						oLlista[iLlista].value = xValor;
						//Canviem la seleccio juntament amb la posicio de l'item
						oLlista[iLlista].selected = false;
						oLlista[iLlista+1].selected = true;
					}
				}
			}
		}
	}
	// Sel per valor
	function selLlistaPerValor(oLlista, sValor){
		for (var iselLlistaPerValor = 0; iselLlistaPerValor < oLlista.length; iselLlistaPerValor++) {
			if (oLlista[iselLlistaPerValor].value == sValor)
				oLlista[iselLlistaPerValor].selected = true;
		}
	}
