// JavaScript Document
//Nombres de los combos y de los arrays de las listas
var combos = new Array("lst_familias", "lst_subfamilias", "lst_grupos", "lst_subgrupos");
var listas = new Array("lfamilias", "lsubfamilias", "lgrupos", "lsubgrupos");

function rellenar(combo, lista, col_nombre)
{
	var n_elementos;
	var sw;
	var i;
	var j;
	var valor_cero;
	
	//Calculamos el número de elementos de la lista correspondiente
	eval("n_elementos = "+lista+".length;");
	//Rellenamos el combo de familias
	for (i=0, j=0, valor_cero=false; i<n_elementos; i++)
	{
		if (!valor_cero)
		{
			eval("document.frm_buscador."+combo+".options[j] = new Option ("+lista+"[i]["+col_nombre+"], "+lista+"[i][0]);");
			j++;
			eval("sw = ("+lista+"[i][0] == 0);")
			if (sw)
			{
				valor_cero = true;
			}
		}
		else
		{
			eval("sw = ("+lista+"[i][0] != 0);")
			if (sw)
			{
				eval("document.frm_buscador."+combo+".options[j] = new Option ("+lista+"[i]["+col_nombre+"], "+lista+"[i][0]);");
				j++;
			}
		}
	}
}

function ini_combos()
{
	var i;
	rellenar(combos[0], listas[0], 1);
	for (i=1; i<combos.length; i++)
	{
		eval("document.frm_buscador."+combos[i]+".disabled=true;");
		//rellenar(combos[i], listas[i], i+1);
	}
}

function borrar_opciones(combo)
{
	var i;
	var n_elementos;
	eval("n_elementos = document.frm_buscador."+combo+".options.length;");
	for (i=n_elementos-1; i>=0; i--)
	{
		eval("document.frm_buscador."+combo+".options[i] = null;");
	}
}

function construir_criterio(n_lista)
{
	var i;
	var cad_criterio;
	var valor;
	var primera;
	for (i=n_lista-1, cad_criterio="", primera = true;i>=0;i--)
	{
		eval("valor = parseInt(document.frm_buscador."+combos[i]+".value);");
		if (!primera)
		{
			cad_criterio = cad_criterio+" && ";
		}
		if (valor !=0)
		{
			cad_criterio = cad_criterio+listas[n_lista]+"[j]["+(i+1)+"] == "+valor;
			primera = false;
		}
	}
	return cad_criterio;
}

function filtrar(cod_criterio)
{
	var i;
	var j;
	var k;
	var combo;
	var n_combo;
	var n_elementos;
	var valor_cero;
	var sw;
	var profundidad;
	var valor;
	/*for (i=0;i<combos.length;i++)
	{
		eval("document.frm_buscador."+combos[i]+".disabled = false;");
	}*/
	eval("document.frm_buscador."+combos[cod_criterio]+".disabled = false;");
	profundidad = 4 - cod_criterio;
	eval("valor = parseInt(document.frm_buscador."+combos[cod_criterio-1]+".value);");
	if (valor == 0)
	{
		ini_combos();
		return;
	}
	for (i=profundidad, n_combo = 3; i>0; i--, n_combo--)
	{
		combo = combos[n_combo];
		borrar_opciones(combo);
		eval("n_elementos = "+listas[n_combo]+".length;");
		for (j=0, k=0, valor_cero=false; j<n_elementos; j++)
		{
			eval("sw = (("+construir_criterio(n_combo)+") || "+listas[n_combo]+"[j][0] == 0);");
			if (sw)
			{
				if (!valor_cero)
				{
					eval("document.frm_buscador."+combo+".options[k] = new Option ("+listas[n_combo]+"[j][n_combo+1], "+listas[n_combo]+"[j][0]);");
					k++;
					eval("sw = ("+listas[n_combo]+"[j][0] == 0);")
					if (sw)
					{
						valor_cero = true;
					}
				}
				else
				{
					eval("sw = ("+listas[n_combo]+"[j][0] != 0);")
					if (sw)
					{
						eval("document.frm_buscador."+combo+".options[k] = new Option ("+listas[n_combo]+"[j][n_combo+1], "+listas[n_combo]+"[j][0]);");
						k++;
					}
				}
			}
		}
	}
	for (i=0;i<combos.length;i++)
	{
		eval("sw = (document.frm_buscador."+combos[i]+".options.length == 1);");
		if (sw)
		{
			eval("document.frm_buscador."+combos[i]+".disabled = true;");
		}
	}
}

function seleccionar_en_combo(valor, combo)
{
	var sw;
	var num_elementos;
	var i;
	eval("num_elementos = document.frm_buscador."+combos[combo]+".options.length;");
	for (i=0; i<num_elementos; i++)
	{
		eval("sw = (document.frm_buscador."+combos[combo]+".options["+i+"].value == valor)");
		if (sw)
		{
			eval("document.frm_buscador."+combos[combo]+".options["+i+"].selected = true");
		}
	}
}

function autoseleccion(familia, subfamilia, grupo, subgrupo)
{
	if (familia != "")
	{
		seleccionar_en_combo(familia, 0);
		filtrar(1);
	}
	
	if (subfamilia != "")
	{
		seleccionar_en_combo(subfamilia, 1);
		filtrar(2);
		eval("document.frm_buscador."+combos[1]+".disabled = true;");
	}
	
	if (grupo != "")
	{
		seleccionar_en_combo(grupo, 2);
		filtrar(3);
		eval("document.frm_buscador."+combos[2]+".disabled = true;");
	}
	
	if (subgrupo != "")
	{
		seleccionar_en_combo(subgrupo, 3);
		filtrar(4);
		eval("document.frm_buscador."+combos[3]+".disabled = true;");
	}
}

function busqueda()
{
	var familia;
	var subfamilia;
	var grupo;
	var subgrupo;
	var texto;
	var opcion;
	var url;
	
	if (!esUndefined(document.frm_buscador.lst_familias))
	{
		familia = document.frm_buscador.lst_familias.value;
	}
	else
	{
		familia = "";
	}
	
	if (!esUndefined(document.frm_buscador.lst_subfamilias))
	{
		subfamilia = document.frm_buscador.lst_subfamilias.value;
	}
	else
	{
		subfamilia = "";
	}
	
	if (!esUndefined(document.frm_buscador.lst_grupos))
	{
		grupo = document.frm_buscador.lst_grupos.value;
	}
	else
	{
		grupo = "";
	}
	
	if (!esUndefined(document.frm_buscador.lst_subgrupos))
	{
		subgrupo = document.frm_buscador.lst_subgrupos.value;
	}
	else
	{
		subgrupo = "";
	}
	
	if (!esUndefined(document.frm_buscador.txt_buscador))
	{
		texto = document.frm_buscador.txt_buscador.value;
	}
	else
	{
		texto = "";
	}
	
	if (!esUndefined(document.frm_buscador.rad_opcion))
	{
		opcion = document.frm_buscador.rad_opcion.value;
	}
	else
	{
		opcion = "1";
	}
	
	if (familia == "0")
	{
		familia = "";
	}
	if (subfamilia == "0")
	{
		subfamilia = "";
	}
	if (grupo == "0")
	{
		grupo = "";
	}
	if (subgrupo == "0")
	{
		subgrupo = "";
	}
	
	url = "index.php?est=2&familia="+familia+"&subfamilia="+subfamilia+"&grupo="+grupo+"&subgrupo="+subgrupo+"&texto="+texto+"&opcion="+opcion;
	document.location.href = url;
}
