	// Navigation functions

	// ......................................................................

	cat_level_3 = new Array();
	cat_level_3[0] = new Array(fimId[0][0], fim[0][0]);
	cat_level_3_in = new Array();
	cat_level_3_in[0] = new Array(fimId[0][0],fimId[0][1], fim[0][0]);
	j=1;
	for (i=1 ; i < fim.length ; i++)
	{
		if (cat_level_3[j-1][0] != fim[i][0])
		{
			cat_level_3[j]= new Array(fimId[i][0], fim[i][0]);
			cat_level_3_in[j]=new Array(fimId[i][0],fimId[i][1], fim[i][0]);
			j++;
		}
	}
	cat_level_3.sort();

	// ......................................................................

	cat_level_2=new Array();
	cat_level_2[0]=new Array(fimId[0][1], fim[0][1]);
	cat_level_2_in=new Array();
	cat_level_2_in[0]=new Array(fimId[0][1],fimId[0][2], fim[0][1]);
	j=1;
	for (i=1;i<fim.length;i++)
	{
		if ((cat_level_2[j-1][1] != fim[i][1]) )
		{
			cat_level_2[j]= new Array(fimId[i][1], fim[i][1]);
			cat_level_2_in[j]=new Array(fimId[i][1],fimId[i][2], fim[i][1]);
			j++;
		}
	}
	cat_level_2.sort();

	// ......................................................................
	
	cat_level_1=new Array();
	cat_level_1[0]=new Array(fimId[0][2], fim[0][2]);
	tmp_cat_level_1=new Array();
	tmp_cat_level_1[0]=fim[0][2];
	j=1;
	for (i=1;i<fim.length;i++)
	{
		all_cat_level_1=tmp_cat_level_1.join(",");
		if ((cat_level_1[j-1][1] != fim[i][2]) && (all_cat_level_1.indexOf("," + fim[i][2] + ",") == -1))
		{
			cat_level_1[j]= new Array(fimId[i][2], fim[i][2]);
			tmp_cat_level_1[j] = fim[i][2];
			j++;
		}
	}
	cat_level_1.sort();

	// ......................................................................

	function cat_level_2_aufbauen(cat_level_1)
	{
		var i,neue_option;
		var selectedId = 0;
		var items = new Object();
		var items_sorted = new Array();
		var log = "";

		document.categories.cat_level_2.options.length=0;
		neue_option = new Option("Categories 2. Level","","true","true");
		document.categories.cat_level_2.options[0]=neue_option;

		// Sort array first
		counter = 0;
		for (i=0;i<cat_level_2_in.length;i++)
		{
			if ((cat_level_2_in[i][1]==cat_level_1) && (cat_level_2_in[i][2] != ''))
			{
				items[cat_level_2_in[i][2]] = cat_level_2_in[i][0];
				log = log + "cat:" + cat_level_2_in[i][0] + "("+ cat_level_2_in[i][2] +"); ";
				items_sorted[counter] = cat_level_2_in[i][2];
				counter++;
			}
		}

		items_sorted.sort();
		
		for (i=0 ; i < counter ; i++)
		{
			// fill dropdown with SORTED data
			// neue_option = new Option(items_sorted[i] + "("+ items[items_sorted[i]] +")",items[items_sorted[i]]);
			neue_option = new Option(items_sorted[i],items[items_sorted[i]]);
			document.categories.cat_level_2.options[document.categories.cat_level_2.options.length] = neue_option;
			if (items[items_sorted[i]] == cat_2_selected)
				{
					selectedId = document.categories.cat_level_2.options.length - 1;
				}
		}

		// alert(log);


		document.categories.cat_level_2.selectedIndex = selectedId;
	}

	// ......................................................................

	function cat_level_3_aufbauen(cat_level_2)
	{

		var i,neue_option;
		var selectedId = 0;
		var items = new Object();
		var items_sorted = new Array();
		var log = "";

		document.categories.cat_level_3.options.length=0;
		neue_option = new Option("Categories 3. Level","","true","true");
		document.categories.cat_level_3.options[0]=neue_option;

		log = log + "cat3_selected="+cat_3_selected+"; ";

		// Sort array first
		counter = 0;
		for (i=0 ; i < cat_level_3_in.length ; i++)
		{
			if ((cat_level_3_in[i][1] == cat_level_2 ) && (cat_level_3_in[i][2] != ''))
			{
				items[cat_level_3_in[i][2]] = cat_level_3_in[i][0];
				log = log + "cat:" + cat_level_3_in[i][0] + "("+ cat_level_3_in[i][2] +"); ";
				items_sorted[counter] = cat_level_3_in[i][2];
				counter++;
			}
		}

		items_sorted.sort();
		
		for (i=0 ; i < counter ; i++)
		{
			// fill dropdown with SORTED data
			// neue_option = new Option(items_sorted[i] + "("+ items[items_sorted[i]] +")",items[items_sorted[i]]);
			neue_option = new Option(items_sorted[i],items[items_sorted[i]]);
			document.categories.cat_level_3.options[document.categories.cat_level_3.options.length] = neue_option;
			if (items[items_sorted[i]] == cat_3_selected)
				{
					selectedId = document.categories.cat_level_3.options.length - 1;
				}
		}

		// alert(log);

		document.categories.cat_level_3.selectedIndex = selectedId;
	}

	// ......................................................................

	function cat_level_2_gewaehlt(cat_level_2)
	{
		if (document.categories.cat_level_2.selectedIndex == 0)
		{
			document.categories.cat_level_3.options.length=0;
			// leeren:
			neue_option = new Option("Categories 3. Level","","true","true");
			document.categories.cat_level_3.options[0] = neue_option;
		}
		else
		{
			cat_level_3_aufbauen(cat_level_2);
		}
	}

	// ......................................................................

	function cat_level_3_gewaehlt(cat_level_3)
	{

	}

	// ......................................................................

	function cat_level_1_gewaehlt(cat_level_1)
	{

		if (document.categories.cat_level_1.selectedIndex==0)
		{
			document.categories.cat_level_2.options.length=0;
			neue_option = new Option("Categories 2. Level","","true","true");
			document.categories.cat_level_2.options[0]=neue_option;
			document.categories.cat_level_3.options.length=0;
			neue_option = new Option("Categories 3. Level","","true","true");
			document.categories.cat_level_3.options[0]=neue_option;
		}
		else
		{
			cat_level_2_aufbauen(cat_level_1);
			document.categories.cat_level_3.options.length=0;
			neue_option = new Option("Categories 3. Level","","true","true");
			document.categories.cat_level_3.options[0]=neue_option;
		}

	}
