function changed( control ) 
{
	for (var q=0;q<ids.length;q++) 
	{
		if (ids[q]==control.name) 
		{ 
			return refresh_lists(q);
		}
	}
}

function change( listbox_index, new_value ) 
{
	var options = document.forms[0][ids[listbox_index]].options; 
	for (var q=0;q<options.length;q++) 
	{
		if (options[q].value==new_value) 
		{
			document.forms[0][ids[listbox_index]].selectedIndex = q;
			return;
		}
	}
}

function refresh_lists( changed_index ) 
{ 
	var filter = new Array();
	var fnd = new Array();
	var cont = new Array(); 
	for (var i=0;i<ids.length;i++) { 
		fnd[i] = new Array();
		cont[i] = new Array();
		if (document.forms[0][ids[i]].selectedIndex>=0 && i<=changed_index) 
		{ 
			filter[i] = document.forms[0][ids[i]].options[ document.forms[0][ids[i]].selectedIndex ].value; 
			if (filter[i]=='_') {
				filter[i] = '';
			}
		} 
		else 
		{ 
			filter[i] = ''; 
		} 
	} 
	for (var q=0;q<x.length;q++) 
	{ 
		is_match = true; 
		for (var sb_index=0;sb_index<ids.length;sb_index++) 
		{ 
			if (filter[sb_index]!='' && filter[sb_index]!=x[q][sb_index]) 
			{ 
				is_match = false; 
				break; 
			} 
		} 
		if (is_match) 
		{ 
			for (var sb_index=0;sb_index<ids.length;sb_index++) 
			{ 
				cont[sb_index][ x[q][sb_index] ] = 1; 
			} 
		} 
	} 
	for (var sb_index=changed_index+1;sb_index<ids.length;sb_index++) 
	{
		fnd[sb_index].sort();
		var options = document.forms[0][ids[sb_index]].options; 
		while (options.length>0) 
		{ 
			options[0] = null; 
		} 
		if (depths[sb_index]==1) {
			if (any[sb_index]!="") {
				options[0] = new Option(any[sb_index],"_"); 
			}
		}
		var v,last_v; v = ''; 
		for (var w=0;w<dis[sb_index].length;w++) 
		{ 
			v = dis[sb_index][w][0]; 
			text = (dis[sb_index][w].length>1) ? dis[sb_index][w][1] : v;
			if (text!='' && last_v!=v && cont[sb_index][v]==1) 
			{ 
				options[options.length] = new Option(text,v); 
			} 
			last_v=v; 
		} 
	} 
	return true; 
} 
