function updateDropdown(e, dd)
{
	for (j=1; j < dd.length; j++)
	{
		dd[j][0] = true;
	}

	for (j=1; j < dd[0].length; j++)
	{
		for (i=1; i < dd.length; i++)
		{
			current = dd[i][j].split("|");
			value = current[0];
			choice = current[0];
			if (current.length == 2) choice = current[1];
			if (value != document[dd[0][0]][dd[0][j][0]][document[dd[0][0]][dd[0][j][0]].selectedIndex].value) dd[i][0] = false;
		}
		if (e == document[dd[0][0]][dd[0][j][0]])
		{
			dropdown(j+1,dd);
			for (k=j+2; k < dd[0].length; k++)
			{
				document[dd[0][0]][dd[0][k][0]].length = 0;
			}
			break;
		}
		
	}
}


function dropdown(item,dd,selected)
{
	var pre1 = "";
	var j = 1;
	var selected_found = false;
	document[dd[0][0]][dd[0][item][0]].options.length = 0;
	document[dd[0][0]][dd[0][item][0]].options[0] = new Option(dd[0][item][1], '');	
	for (i=1; i < dd.length; i++)
	{
		if (dd[i][0] || item == 1)
		{
			current = dd[i][item].split("|");
			value = current[0];
			choice = current[0];
			if (current.length == 2) choice = current[1];
			if (value != pre1)
			{				
				var op = new Option(choice, value);
				if( selected != null && selected[item-1] != null)
				{
					if( value == selected[item-1])
					{
						op.selected = true;
						selected_found = true;
					}
					
				}
				document[dd[0][0]][dd[0][item][0]].options[j] = op;
				j++;
				pre1 = value;
			}
			if( selected != null && selected[item - 1] != null)
			{
				if( value != selected[item-1] )
				{
					dd[i][0] = false;
				}
			}
		}
	}
	if(selected_found)
	{
		if( item+1 <= dd[0].length)
		{
			dropdown(item+1, dd, selected);
		}
	} else {
		document[dd[0][0]][dd[0][item][0]].options[0].selected = true;
	}
}